以下是学习中遇到三个不明白的问题 , 想请教朋友来回答一下:
题目: 对 10 个分数排序.
第一个 for循环中为什么要用 if 判断 (i !=9 ),不是直接打印就行吗?
冒泡排序循环外层为什么用 for(i=8;;), 等于9不行么?
还有就是所控制 " 每趟比较的最大下标" 是什么意思?
(原理不是 让 i = 9 然后不停对上一次排完序的数组从新排序吗?)
3. 如 1, 为什么排序后还是要用 i !=9 ?
纠结 ... 希望有经验的朋友能够帮忙解惑一下 !
i != 9 的时候,printf打印出的是“数字和一个空格”,当 i == 9 ,也就是最后一个数时,就不打印后面的空格了。这纯粹是为了打印出来好看。
看内层循环,第一次内层循环让第1个数依次和后面的数相比较,直至比到第10个数,一共比9次。第二次内层循环还是从第1个数开始依次向后比较,这次就不用比最后一个数了,因为经过上次比较后,最后一个数肯定是最大的了,所以这次一共比较8次。第三次内循环一共比较7次......最后一个内循环就只要比较前两个数就可以了。 这样内层循环一共执行了9次,外循环就是用来控制这9次比较的,i从8递减到0就是9次。
和第一问一样。