氣泡排序(bubble sorting)的基本思想是:設待排序n個元素存放在陣列a[n]中,無序區範圍初始為(a(0),a(1),a(2),...,a[n-1]),氣泡排序方法是在當前無序區內,從最上面的元素a[0]開始,對每兩個相鄰的元素a[i+1]和a[i](i=0,1,...,n-1)進行比較,且使值較小的元素換至值較大的元素之上(若a[i]>a[i+1],則a[i]和a[i+1]的值互換),這樣經過一趟氣泡排序後,假設最後下移的元素為a[k],則無序區中值較大的幾個元素到達下端並從小到大依次存放在a[k+1],a[k+2],...a[n-1]中,這樣無序區範圍變為(a[0],a[1],a[2],...,a[k])。在當前無序區內進行下一趟氣泡排序。這個過程一直到某一趟排序中不出現元素交換的動作,排序結束。整個排序過程最多執行n-1遍。這種排序方法是通過相鄰元素之間的比較與交換,使值較小的元素逐漸從後部移向前部(從下標較大的單元移向下標較小的單元),就象水底下的氣泡一樣逐漸向上冒。故稱為氣泡排序法。
1、排序方法
將被排序的記錄陣列r[1..n]垂直排列,每個記錄r[i]看作是重量為r[i].key的氣泡。根據輕氣泡不能在重氣泡之下的原則,從下往上掃瞄陣列r:凡掃瞄到違反本原則的輕氣泡,就使其向上"飄浮"。如此反覆進行,直到最後任何兩個氣泡都是輕者在上,重者在下為止。
(1)初始
r[1..n]為無序區。
(2)第一趟掃瞄
從無序區底部向上依次比較相鄰的兩個氣泡的重量,若發現輕者在下、重者在上,則交換二者的位置。即依次比較(r[n],r[n-1]),(r[n-1],r[n-2]),…,(r[2],r[1]);對於每對氣泡(r[j+1],r[j]),若r[j+1].key
(3)第二趟掃瞄
掃瞄r[2..n]。掃瞄完畢時,"次輕"的氣泡飄浮到r[2]的位置上……
最後,經過n-1 趟掃瞄可得到有序區r[1..n]
注意:第i趟掃瞄時,r[1..i-1]和r[i..n]分別為當前的有序區和無序區。掃瞄仍是從無序區底部向上直至該區頂部。掃瞄完畢時,該區中最輕氣泡飄浮到頂部位置r[i]上,結果是r[1..i]變為新的有序區。
2、氣泡排序過程示例
對關鍵字序列為49 38 65 97 76 13 27
49的檔案進行氣泡排序的過程【
參見動畫演示
】3、排序演算法
(1)分析
因為每一趟排序都使有序區增加了乙個氣泡,在經過n-1趟排序之後,有序區中就有n-1個氣泡,而無序區中氣泡的重量總是大於等於有序區中氣泡的重量,所以整個氣泡排序過程至多需要進行n-1趟排序。
若在某一趟排序中未發現氣泡位置的交換,則說明待排序的無序區中所有氣泡均滿足輕者在上,重者在下的原則,因此,氣泡排序過程可在此趟排序後終止。為此,在下面給出的演算法中,引入乙個布林量exchange,在每趟排序開始前,先將其置為false。若排序過程中發生了交換,則將其置為true。各趟排序結束時檢查exchange,若未曾發生過交換則終止演算法,不再進行下一趟排序。
(2)具體演算法
using system;
using system.collections.generic;
using system.text;
namespace exebullitionsorter
}j++;}}
static void main(string args)
;ebullitionsorter e = new ebullitionsorter ();
e.sort(array);
foreach (int m in array)
console.writeline("", m); }
}}
資料結構 排序 交換排序 氣泡排序法
資料結構 排序 交換排序 氣泡排序法 氣泡排序 bubble sorting 的基本思想是 設待排序n個元素存放在陣列a n 中,無序區範圍初始為 a 0 a 1 a 2 a n 1 冒泡 排序方法是在當前無序區內,從最上面的元素a 0 開始,對每兩個相鄰的元素a i 1 和a i i 0,1,n ...
資料結構 交換排序之氣泡排序法詳解
基本思想 從第乙個數開始,依次往後比較,如果前面的數比後面的數大就交換,否則不作處理。這就類似燒開水時,壺底的水泡往上冒的過程。具體過程 採用雙層迴圈進行氣泡排序 舉例 待排序資料如下 87 645第一次比較 78 645第二次比較 76 845第三次比較 76 485第四次比較 76 458經過四...
資料結構 排序 交換排序 快速排序法
資料結構 排序 交換排序 快速排序法 1 演算法思想 快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquermethod 1 分治法的基本思想 分治法的基本思想是 將原問題分解為若干個規模更小但結構與原問題相...