資料結構與演算法之氣泡排序

2021-08-15 20:54:33 字數 1341 閱讀 1263

氣泡排序作為演算法的入門程式,就好比程式語言裡面的hello world。

核心思想就是將相鄰的兩個元素進行比較,如果順序錯誤就進行交換。

給定一組資料:9,7,3,5,8,2,1。

從第乙個數字9開始,將他與前面的數字7進行比較,大於7,然後兩個就交換位置,然後在用9去跟3做比較,大於3,同樣交換位置,依此類推,最終9放在了最後乙個位置,也就是說,經過第一趟排序後,最大的數字移動到了最後一位上面。

一:7 3 5 8 2 1 9;

同理:第二次迴圈則只用考慮前面的7到1這六個數了。這次會篩選出第二大的數字。

二:3  5 7 2 1 8 9

依此類推:

三:3 5 2 1 7 8 9

四:3 2 1 5 7 8 9

五:2 1 3 5 7 8 9

六:1 2 3 5 7 8 9。

至此我們可以寫出程式。

public class bubblesort }}

return arr;}}

由於每次都要比較所有未排序的元素,而且要比較n-1次,所以氣泡排序的時間複雜度是 o(n²).

優化一:如果在某一次排序後,陣列已經有序,後面就不用再比較了。這時我們只需在每趟迴圈之前初始化乙個標誌位,如果這趟排序沒有元素交換,則證明陣列已經有序,則直接返回即可。

public class bubblesortimprove 

}if (flag == 1)

}return arr;}}

優化二:如果陣列arr[0] 到arr[i]已經有序,上次掃瞄最後一次資料交換的位置為lastposs,則下次掃瞄的範圍可以縮減到lastposs到len

public class bubblesortimprove1 

}if (lastposs == lasttemp)

}return arr;}}

分別對這三個方法進行測試

public class test 

}

其中未經改進的氣泡排序bubblesort所花費的時間是500毫秒左右

而經過改進的另外兩個則是只有幾毫秒

資料結構與演算法之氣泡排序

一 氣泡排序的定義及其理解 氣泡排序是一種交換排序,它的基本思路是 兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。氣泡排序其實很容易理解,顧名思義,我們會想到氣泡。就像水底下的魚兒嘴巴裡吐出的氣泡,越鄰近水平面上的氣泡是越大的。那如何用氣泡排序的方法對大小不一的氣泡進行排序呢?氣...

資料結構與演算法之氣泡排序

勵志成為程式設計師的小白又來啦!這次要分享的是演算法中的幾種常用排序。首先這次我們要分享的是最經典的氣泡排序 氣泡排序 它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序 如從大到小 首字母從a到z 錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說...

資料結構與演算法之氣泡排序

1.什麼是氣泡排序 我自己的理解 相鄰的數字之間兩兩比較不斷的從右向左推選出最大 小 值的過程。特點就是一次只能在最右邊推舉出乙個最大 小 值,所以需要多次推舉 2.對上面的理解畫 釋一下,以陣列 3,4,1,5,2由小到大為例 測試結果 1,2,3,4,5 4.時間複雜度o n 2 證明一下 當外...