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

2021-10-07 14:10:16 字數 1495 閱讀 8037

1. 什麼是氣泡排序:

我自己的理解:相鄰的數字之間兩兩比較不斷的從右向左推選出最大(小)值的過程。特點就是一次只能在最右邊推舉出乙個最大(小)值,所以需要多次推舉

2. 對上面的理解畫**釋一下,以陣列 3, 4,1,5,2由小到大為例:

}}// 測試結果

[1, 2, 3, 4, 5]

4. 時間複雜度o(n^2),證明一下

當外層迴圈 i = 1 時,記憶體迴圈j的可取值為 0,1,2,記憶體迴圈4行**,所以執行次數為 4 * 3

當外層迴圈 i = 2 時,記憶體迴圈j的可取值為 0,1,記憶體迴圈4行**,所以執行次數為 4 * 2

當外層迴圈 i = 3 時,記憶體迴圈j的可取值為 0,記憶體迴圈4行**,所以執行次數為 4 * 1

所以,基本操作執行次數 t(4) = 4 * 3 + 4 * 2 + 4 * 1 = 4 * (1 + 2 + 3),

由此 t(n) = 4 * (1 + 2 + 3 + ... + (n - 1)) = 4 * ((1 + (n - 1)) * (n - 1) / 2) = 2n^2 - 2n    -->證明略,這步高數應該可以證明,哈哈

去掉低次冪,去掉常數項,可以得到漸進時間複雜度為 o(n^2)   --> 我時間漸進複雜度的部落格裡有寫時間複雜度怎麼求

5. 氣泡排序優化

/**

* 氣泡排序優化

*/public class bubblesort ;

bubblesmalltolarge(num);

system.out.println(arrays.tostring(num));

}public static void bubblesmalltolarge(int num)

}if (!flag) else }}

}

優點是:優化過後排序的時間複雜度最好可以是 o(n),即:方法引數num陣列本來就是有序的

6. 總結

之前也看過氣泡排序,可看過之後老是忘記。現在總結來看就是不明白氣泡排序的特徵,也就是第一項寫的"什麼是氣泡排序",把氣泡排序的特徵搞明白其實就理解了,再乙個是時間複雜度,要知道氣泡排序的時間複雜度是怎麼來的。

> 如果有理解不對或者不到位的地方,還請大佬們指正,不勝感激!

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

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

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

氣泡排序作為演算法的入門程式,就好比程式語言裡面的hello world。核心思想就是將相鄰的兩個元素進行比較,如果順序錯誤就進行交換。給定一組資料 9,7,3,5,8,2,1。從第乙個數字9開始,將他與前面的數字7進行比較,大於7,然後兩個就交換位置,然後在用9去跟3做比較,大於3,同樣交換位置,...

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

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