氣泡排序演算法如下:
int temp;
int a[10]=;
int i,j;
for(i=0;i<9;i++)
for(j=0;j<9;j++)
}這個氣泡排序寫的是有錯誤的
原因:每次排兩三數之後會重新拍
如果把if裡面的i換成j就可以了
我的理解,首先有10個數,一般排序是要進行9*9次
如果是9次,第一次迴圈9次是必須的,無論任何演算法,關鍵在第二個迴圈
這就要看j的值了
當j等於零的時候,也就是第乙個數3要與後面的9個數進行9次比較,如果從小到大那麼在迴圈了9次之後就要把
最小的乙個值放在最前面 緊接著進行第二次迴圈 這時10個數已經變成了9個
自然第二次迴圈就可以進行8次比較了,所以j的最大值可以減一
第一次排出a[0]=0 剩下 此時i等於1 j從0---8
此時我有乙個疑問 下次排序還是從a[0] 理解成最小的值已經放到最前面 那後面的數咋排 哎 寫出排序的流程吧
3,45,10,5,68,32,8,9,0,50
3,10,45,5,68,32,8,9,0,50
3,10,5,45,68,32,8,9,0,50
3,10,5,45,68,32,8,9,0,50
3,10,5,45,32,68,8,9,0,50
3,10,5,45,32,8,68,9,0,50
3,10,5,45,32,8,9,68,0,50
3,10,5,45,32,8,9,0,68,50
3,10,5,45,32,8,9,0,50,80
寫到這裡我的疑問消失了,原來在每次排序過後,最大的數值放到最後面了,所以j的值可以減1
從大到小也應該是這個道理吧 把最小的放到了 後面 實踐檢驗整理 試下哈哈
45,3,10,5,68,32,8,9,0,50
45,10,3,5,68,32,8,9,0,50
45,10,5,3,68,32,8,9,0,50
45,10,5,68,3,32,8,9,0,50
45,10,5,68,32,3,8,9,0,50
45,10,5,68,32,8,3,9,0,50
45,10,5,68,32,8,9,3,0,50
45,10,5,68,32,8,9,3,0,50
45,10,5,68,32,8,9,3,50,0
正確for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
{if(a[j]世上無難事,只怕無心人。偶也
氣泡排序和選擇排序的見解
氣泡排序 第乙個for迴圈 若用i計數,與陣列下標無關,是需要進行比較的次數,如十個數需要比較九次 第二個for迴圈,j從0開始,因為最大或最小的已經放在了最後面,若已經確定了i個,所以只用比較9 i次,然後兩兩相鄰之間的數進行比較。選擇排序 第乙個for迴圈 若用i計數,與陣列下標無關 令第乙個數...
氣泡排序 排序 氣泡排序
既然寫了計組思來想去便打算把資料結構也寫下來,寫的時候總是發現看的時候無法發現的問題,受益良多。交換排序的基本思想 exchange until sorted 順序,分支,迴圈 注意偽 的熟悉 下面介紹兩種交換演算法 首先進行聯想,用乙個圖進行輔助聯想 水冒泡過程 頂部是陣列的begin,底部理解為...
map集合的見解 排序
map是鍵值對的集合介面,它的實現類主要包括 hashmap,treemap,hashtable以及linkedhashmap等 hashmap 我們最常用的map,它根據key的hashcode 值來儲存資料,根據key可以直接獲取它的value,同時它具有很快的訪問速度。hashmap最多隻允許...