已知一組無序資料a[1]、a[2]、……a[n],需將其按公升序排列。首先比較a[1]與a[2]的值,若a[1]大於a[2]則交換兩者的值,否則不變。
再比較a[2]與a[3]的值,若a[2]大於a[3]則交換兩者的值,否則不變。再比較a[3]與a[4],以此類推,最後比較a[n-1]與a[n]的值。
這樣處理一輪後,a[n]的值一定是這組資料中最大的。再對a[1]~a[n-1]以相同方法處理一輪,則a[n-1]的值一定是a[1]~a[n-1]中最大的。
再對a[1]~a[n-2]以相同方法處理一輪,以此類推。共處理n-1輪後a[1]、a[2]、……a[n]就以公升序排列了。
降序排列與公升序排列相類似,若a[1]小於a[2]則交換兩者的值,否則不變,後面以此類推。
總的來講,每一輪排序後最大(或最小)的數將移動到資料序列的最後,理論上總共要進行n(n-1)/2次交換。
優點:穩定
時間複雜度:理想情況下(陣列本來就是有序的),此時最好的時間複雜度為o(n),最壞的時間複雜度(資料反序的),此時的時間複雜度為o(n*n) 。
氣泡排序的平均時間負責度為o(n*n).
缺點:慢,每次只移動相鄰的兩個元素。
氣泡排序8;
15bubblesort(data);
16foreach (var temp in
data)
1720
console.readkey();21}
2223
//24
25///
26///
最底下元素對應最小索引
27///
28///
29static
void bubblesort(int
dataarray)
3043}44
}45}46
47//
從上到下
48//
static void bubblesort(int dataarray)
49//
60//}61
//}62//}63
}64 }
排序01 氣泡排序法
常見的演算法題 排序 排序分為很多種類,最常見的有氣泡排序法,簡單排序法,直接插入排序法等幾種排序法 氣泡排序法,是排序中最簡單和最常見的排序法。氣泡排序法是將相鄰的元素兩兩進行比對,將逆序的元素進行交換就行。時間複雜度 o n 2 如下 public class bubblesort int ar...
01。氣泡排序 桶排序
1 第乙個作業 氣泡排序 時間複雜度3個版本,用時間函式分別測算執行時間,保留編寫的 第二個作業 2 給出乙個字串中,分別統計每個英文本母的個數 英文本母,都是小寫字母 第三個作業 3 註冊部落格,然後 整理氣泡排序 氣泡排序的排序過程是怎樣的?氣泡排序的時間複雜度?冒牌排序優化?氣泡排序用在哪些地...
資料結構01 氣泡排序
在資料結構的演算法中,利用交換資料元素的位置進行排序的方法稱作為交換排序,而氣泡排序 就是常用的交換演算法之一。氣泡排序的基本思想 設陣列a中存放了n個資料元素,迴圈進行n 1趟如下的排序過程,從最後乙個元素開始比較,第一趟時,依次比較相鄰兩個資料元素 a i 和 a i 1 若為逆序,即a i 1...