1樓:
1.定義了a[10]十個儲存的空間,後面賦了九個值,最後一個沒有賦也就是說用0代替,這是對的
for(i=0;i<8;i++)
for(j=0;j<8-i;j++)
你的迴圈中,8限制了你比較的數是8+1=9個,最後一個0沒有參加比較,還是放在陣列a[9]中,如果你要0參加排序,上面的兩個8改為9
for(i=0;i<9;i++)
這是你的列印,只列印了9個數,如果你改為i<10,則可打出最後一個02.因為for下面只有一個語句,就可以不用加#include
void main()
;int i,j,k;
for(i=0;i<8;i++)
}}//加的}
for(i=0;i<9;i++)
printf("\n");
getch();}3.
for(j=0;j<8-i;j++)
第一次i=0,即找出最大的數,這時需要比較8次(9個數)第二次i=1時,即找第二大的數,由於最大的已經找到了,所以只需要比較8-i=7次
第三次時,只需比較剩下的7個數,即8-i=6次。。。。。
4.a[j+1]不是a[j]+1,而是第j+1個數j的初始值是0,也就是說j的第0個值也就是8j+1=1,也就是說j的第1個值也就是9
比較8和9的值
類似的j=1時,就是比較第1個值9和第j+1=2個值1了
2樓:手機使用者
基本思路:對尚未排序的各元素從頭到尾依次依次比較相鄰的兩個元素是否逆序(與欲排順序相反),若逆序就交換這兩元素,經過第一輪比較排序後便可把最大(或最小)的元素排好,然後再用同樣的方法把剩下的元素逐個進行比較,就得到了你所要的順序。可以看出如果有n個元素,那麼一共要進行n-1輪比較,第i輪要進行j=n-i次比較。
(如:有5個元素,則要進行5-1輪比較。第3輪則要進行5-3次比較)
你的程式錯了,應該是:
#include
void main()
;int i,j,k;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
}for(i=0;i<10;i++)
printf("\n");
//getch();}
3樓:匿名使用者
for(i=0;i<9;i++)
他只輸出了9個,所以他沒有輸出a[9],他賦的是前面9個值,也就是a[0]~a[8]
for沒有大括號就是下面一句,例如
for(i=0;i<9;i++)
x++;
那麼就是迴圈x++
同理這裡是迴圈
for(j=0;j<8-i;j++)
這句,由於這句帶有大括號,所以是這一句的整體,即for(j=0;j<8-i;j++)
}j<8-i就是冒泡了,其實他是沉底,例如最後一位已經最大了,那麼下次迴圈就不必判斷了,所以是8-i,不過好像應該是9-i才對
拿你的例子a[j]>a[j+1] j=0,那麼就是a[0]>a[0+1]也就是8>9
4樓:昕日會更好
這演算法的確沒什麼用,二樓是正解
5樓:
1.這個程式前面的排序並沒有用到第十個數0(i<8),而輸出時是i<9,故輸出時0位於最後.
2.第二個for語句是一體作為第一個for語句的**內容,由於是一個整體可看成一句,故可不加大括號。
3.所謂的氣泡排序,分為n-1(n為要比較數的個數)個迴圈,每個迴圈要比較大小(n-i)次。其中每一次迴圈都會減少一個數(上次迴圈剛交換過,已經是最小),則j<(8-i)就是第一次迴圈時,是比較(8-0)次(9個數),第二次迴圈時是8個數,要比較(8-1)次,一次類推。
4.你說的太亂,我簡單講一下第九行的含義吧,就是指當陣列裡的一行數,如果前面的數大於後面的數就交換,否則不交換,if(a[j]>a[j+1])用來判斷前後兩數大小的
這樣再不懂的話,我也無能為力了。
#include
void main()
;int i,j,k;
for(i=0;i<8;i++)//這裡i<8,說明只有9個數進入排序//}
//}for(i=0;i<9;i++)
printf("\n");
getch();}
6樓:匿名使用者
不懂也沒必要這麼折磨自己,
冒泡演算法效能很低下的,在實際開發中不能用。
一般來說每個企業庫都是有自己的演算法的,
比如微軟就有自己的一些演算法類庫,
你只需要呼叫就ok了,
當然,有興趣也可以看看底層實現。
關於C語言氣泡排序法要詳解,C語言氣泡排序法
牧念露 include void main int i,j,k for i 0 i 8 i for j 0 j 10 j for j 0 j 9 j for j 0 j 10 j 9在j 9 中 printf n getch 陣列元素進行比較的時候,下標不對。include void main in...
C氣泡排序,c 關於氣泡排序法的簡單程式碼
如下 class program static void main string args 個同學的分數 i array i 1 int.parse console.readline sort array console.writeline n 成績排序結果如下 for int i 0 i arra...
C 下用氣泡排序法排列數,C 下用氣泡排序法排列10個數
乾珈藍佑 將你的 中 for j 9,q 1 q n k j q 的n改為10就可以了 for j 9,q 1 q 10 k j q 改為10以後,程式就沒有問題了 你的main函式顯示有問題,顯示的aa.display 在排序的aa.sortnum 之前了,那樣顯示的是排序前的順序,在aa.sor...