冒泡排序作為學(xué)習(xí)排序最基本的算法,具有穩(wěn)定性與實(shí)用性。
下面是C語言冒泡排序的源代碼
#includeint main(void) { int a[10]={6,4,3,2,7,8,9,10,1,5}; int i,k,w; for(i=0;i<9;i++) { for(k=0;k<9-i;k++) { if(a[k]>a[k+1]) { w=a[k]; a[k]=a[k+1]; a[k+1]=w; } } } for(i=0;i<10;i++) { printf("%d ",a[i]); } }
以下是輸出的結(jié)果
下面進(jìn)行代碼講解:
如果前一位的數(shù)字大于后一位的,那么這兩個(gè)數(shù)字交換位置,因此,最大的數(shù)字在第一輪循環(huán)中不斷像一個(gè)氣泡一樣向上冒,在第一輪循環(huán)結(jié)束后排在最后一個(gè)(最右邊),接著進(jìn)行下一輪循環(huán),由于這個(gè)最大的數(shù)在第一輪循環(huán)中已經(jīng)打遍天下無敵手,大家認(rèn)可了它的實(shí)力,第二輪比武他就可以不用參與了,則我們比較的次數(shù)變成9-1=8->我們得到了節(jié)省內(nèi)存的算法,由此類推,數(shù)字一個(gè)個(gè)排序進(jìn)行。
Warning:
博主在期末考試的時(shí)候犯了一個(gè)傻乎乎的錯(cuò)誤,內(nèi)外層循環(huán)變量整的一樣的,結(jié)果人家i循環(huán)了一遍跑了(詳情請看上面的代碼)提醒大家不要犯錯(cuò)哦