氣泡排序的個人理解

2022-04-27 16:28:17 字數 820 閱讀 8582

去新松面試筆試題中最後一道是氣泡排序,看到這題先是興奮後是悲哀。

興奮的是這麼簡單啊,上大學時整的老明白了,考試的時候也為數不多的自己答的題。

悲哀的是畢業後就再也沒用過,全都就飯吃了。。。

想想看我最有文化的時候應該就是高三了,但是當年的數理化知識現在還記得多少?

花了乙個小時惡補了一下,唉!這學習能力趕上老年人了。

下面說正事,區區幾行**資訊量還不少。

int a[10] = ;

bool bisswap = true;//判斷後面的序列是否已經有序

for (int i=0;i<10-1 && bisswap;i++) }}

這裡i只起到控制迴圈的作用,並沒有用來運算元組。外面的迴圈每執行一次都會從陣列中剩下的沒排好序的序列中找出乙個最小值。

比如第一次迴圈一定能找出陣列中最小值,第二次迴圈一定能找出陣列中第二小的值如此反覆。

所以i可以被當作乙個flag,標記當前正在查詢陣列中第幾小的數,裡面的迴圈中j>i就起這個作用。

因為有陣列中有10個數,這樣外面的迴圈只需要迴圈9次就能找出陣列中最小的9個數併排好序。

在裡面的迴圈中,每次j都從陣列的最後端向前端查詢,在查詢的過程中會「順帶」的把陣列中剩下的較小的值向上提公升,這就比j從大到小查詢更有效率。

我這個例子比較極端是完全逆序的陣列,如果不是完全逆序就更容易看出。

比如int a[10] = ;

第一次迴圈時會把1"提公升"到現在的9後面,陣列變成 如果第二個迴圈寫成for (j=i+1;j<=10;j++)

則外面的迴圈在第二次迴圈時會將2換到現在1的位置,也就是陣列的最後,陣列變成,這樣就增加了比較次數。

個人對氣泡排序的一些理解

氣泡排序 將乙個無序陣列進行排序 例 規則 從第乙個數開始,第乙個數和後面的數進行比較,小的放前面,大的放後面。直到最後兩個數進行比較後,算一輪排序。因為每一輪會確定乙個數的位置,因此總輪數正好是陣列長度 1。考慮使用內外層for迴圈,外層控制氣泡排序的輪數,內層迴圈對數進行兩兩比較。使用if條件語...

氣泡排序的理解

int temp 作為交換媒介 for int i 0 i a.length i 外層迴圈 啟動內層迴圈,並改變內層迴圈次數限制。內層迴圈 比較 交換相鄰的兩個數,比較次數是陣列裡的資料個數減1。理解 假設陣列a裡有5個數。第一層迴圈會迴圈5次,也就是啟動5次第二層迴圈,同時每次都將改變第二層迴圈限...

氣泡排序的理解

什麼是氣泡排序,就是兩個相鄰元素之間進行比較,然後較大的數字交換到右邊。設定乙個陣列arr 1,5,3,7,6,8,4,2 先進行第一輪比較 for let i 0 i1 i i 0 arr 0 arr 1 較大的是5 不交換位置 此時順序 1,5,3,7,6,8,4,2 i 1 arr 1 arr...