冒泡排序

什么是冒泡排序役首?

冒泡排序(Bubble Sort)是一種簡單的排序算法莱衩。它重復地走訪過要排序的數列,一次比較兩個元素慢睡,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換铡溪,也就是說該數列已經排序完成漂辐。

這個算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端,故名冒泡排序棕硫。

冒泡排序實現原理

冒泡排序算法的運作如下:(從后往前)

1.比較相鄰的元素髓涯。如果第一個比第二個大,就交換他們兩個哈扮。

2.對每一對相鄰元素作同樣的工作纬纪,從開始第一對到結尾的最后一對。在這一點灶泵,最后的元素應該會是最大的數育八。

3.針對所有的元素重復以上的步驟,除了最后一個赦邻。

4.持續(xù)每次對越來越少的元素重復上面的步驟髓棋,直到沒有任何一對數字需要比較。

示意圖:

性能分析:

若記錄序列的初始狀態(tài)為"正序"惶洲,則冒泡排序過程只需進行一趟排序按声,在排序過程中只需進行n-1次比較,且不移動記錄恬吕;反之签则,若記錄序列的初始狀態(tài)為"逆序",則需進行n(n-1)/2次比較和記錄移動铐料。因此冒泡排序總的時間復雜度為O(n*n)渐裂。

冒泡排序:穩(wěn)定算法

冒泡排序的三種算法實現(優(yōu)化):

1豺旬、冒泡排序 ?

/**

* 第一種直接冒泡

* @param a

*/

public static void BubbleSort1(int a[])

{

int i, j;

int temp = 0;

for (i = 0; i < a.length; i++)

for (j = 1; j < a.length - i; j++)

if (a[j - 1] > a[j]) {

temp = a[j - 1];

a[j - 1] = a[j];

a[j] = temp;

}

for (int x : a) {

System.out.print(x + "? ");

}

}

?2、標志位方法

public static void BubbleSort2(int a[]) {

int j, k;

boolean flag;

k = a.length;

flag = true;

while (flag) {

flag = false;

for (j = 1; j < k; j++)

if (a[j - 1] > a[j]) {

int temp = a[j - 1];

a[j - 1] = a[j];

a[j] = temp;

flag = true;

}

k--;

}

for (int i : a) {

System.out.print(i + " ");

}

}


3柒凉、前面無序 后面有序的情況

/**

* 前面無序 后面有序的

*/

public static void BubbleSort3(int a[]) {

int j, k;

int flag;

flag = a.length;

while (flag > 0) {

k = flag;

flag = 0;

for (j = 1; j < k; j++)

if (a[j - 1] > a[j]) {

int temp = a[j - 1];

a[j - 1] = a[j];

a[j] = temp;

flag = j;

}

}

for (int i : a) {

System.out.print(i + " ");

}

}


注:冒泡排序算法是一個效率比較低下的算法族阅,小數據的時候無所謂,如果數據量比較大的話還是建議選擇其他算法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末膝捞,一起剝皮案震驚了整個濱河市坦刀,隨后出現的幾起案子,更是在濱河造成了極大的恐慌蔬咬,老刑警劉巖鲤遥,帶你破解...
    沈念sama閱讀 211,423評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異林艘,居然都是意外死亡盖奈,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,147評論 2 385
  • 文/潘曉璐 我一進店門狐援,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卜朗,“玉大人,你說我怎么就攤上這事咕村〕《ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 157,019評論 0 348
  • 文/不壞的土叔 我叫張陵懈涛,是天一觀的道長逛万。 經常有香客問我,道長批钠,這世上最難降的妖魔是什么宇植? 我笑而不...
    開封第一講書人閱讀 56,443評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮埋心,結果婚禮上指郁,老公的妹妹穿的比我還像新娘。我一直安慰自己拷呆,他們只是感情好闲坎,可當我...
    茶點故事閱讀 65,535評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茬斧,像睡著了一般腰懂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上项秉,一...
    開封第一講書人閱讀 49,798評論 1 290
  • 那天绣溜,我揣著相機與錄音,去河邊找鬼娄蔼。 笑死怖喻,一個胖子當著我的面吹牛底哗,可吹牛的內容都是我干的。 我是一名探鬼主播锚沸,決...
    沈念sama閱讀 38,941評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼艘虎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了咒吐?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,704評論 0 266
  • 序言:老撾萬榮一對情侶失蹤属划,失蹤者是張志新(化名)和其女友劉穎恬叹,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體同眯,經...
    沈念sama閱讀 44,152評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡绽昼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,494評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了须蜗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硅确。...
    茶點故事閱讀 38,629評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖明肮,靈堂內的尸體忽然破棺而出菱农,到底是詐尸還是另有隱情,我是刑警寧澤柿估,帶...
    沈念sama閱讀 34,295評論 4 329
  • 正文 年R本政府宣布循未,位于F島的核電站,受9級特大地震影響秫舌,放射性物質發(fā)生泄漏的妖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,901評論 3 313
  • 文/蒙蒙 一足陨、第九天 我趴在偏房一處隱蔽的房頂上張望嫂粟。 院中可真熱鬧,春花似錦墨缘、人聲如沸星虹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搁凸。三九已至,卻和暖如春狠毯,著一層夾襖步出監(jiān)牢的瞬間护糖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,978評論 1 266
  • 我被黑心中介騙來泰國打工嚼松, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嫡良,地道東北人锰扶。 一個月前我還...
    沈念sama閱讀 46,333評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像寝受,于是被迫代替她去往敵國和親坷牛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,499評論 2 348

推薦閱讀更多精彩內容