請教關于冒泡排序的問題
以下是學習中遇到三個不明白的問題 , 想請教朋友來回答一下:
題目: 對 ?10 個分數排序.
第一個 for循環中為什么要用 ?if 判斷 (i !=9 ),不是直接打印就行嗎?
冒泡排序循環外層為什么用 for(i=8;;), 等于9不行么??
還有就是所控制 ?" 每趟比較的最大下標" 是什么意思?
(原理不是 讓 ?i = 9 然后不停對上一次排完序的數組從新排序嗎?)
?3. ? ?如 1, 為什么排序后還是要用 i !=9 ? ?
? ? 糾結 ... ?希望有經驗的朋友能夠幫忙解惑一下 !
2015-10-18
i != 9 的時候,printf打印出的是“數字和一個空格”,當 i == 9 ,也就是最后一個數時,就不打印后面的空格了。這純粹是為了打印出來好看。
看內層循環,第一次內層循環讓第1個數依次和后面的數相比較,直至比到第10個數,一共比9次。第二次內層循環還是從第1個數開始依次向后比較,這次就不用比最后一個數了,因為經過上次比較后,最后一個數肯定是最大的了,所以這次一共比較8次。第三次內循環一共比較7次......最后一個內循環就只要比較前兩個數就可以了。 這樣內層循環一共執行了9次,外循環就是用來控制這9次比較的,i從8遞減到0就是9次。
和第一問一樣。