氣泡排序我的見解

2021-09-30 09:28:08 字數 1270 閱讀 8042

氣泡排序演算法如下:

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最多隻允許...