氣泡排序屬於交換排序的一種典型的交換排序。交換排序的基本思想是:兩兩比較待排序的關鍵碼,發現記錄逆置則進行交換,知道沒有逆置對位置。對於氣泡排序而言,則就是單純的兩兩進行比較,知道不能再繼續冒泡為止。
我們通過【45,34,78,12,34』,32,29,64】陣列為例,進行講解。
i值過程
i=0j=7 a和a;64>29,不逆置;j=6 a和a29<32,逆置;j=5 a和a29<34』,逆置;…12最後和45進行交換,交換完之後的排序:12,45,34,78,29,34』,32,64
i=132左移冒到34』左側,29左移冒到45左側,交換完之後的排序:12,29,45,34,78,32,34』,64
i=232左移冒到45左側,交換完之後的排序:12,29,32,45,34,78,34』,64
i=334』左移冒到78左側,34左移冒到45左側,交換完之後的排序:12,29,32,34,45,34』,78,64
i=464左移冒到78左側,34』左移冒到45左側,交換完之後的排序:12,29,32,34,34』,45,64,78
i=5無可冒泡的數,冒泡過程結束
遇到碰見比我大的我就插隊,往前走,就好似上學時候我們排隊似的,一層一層的兩兩比較,長得矮的一點一點的往前挪。
氣泡排序**如下:
public
static
void main(string args) ;
bublesort(array,array.length);
system.out.println(arrays.tostring(array));
}static
void bublesort(int arr,int n)
}//如果沒發生過交換,則表示已經排好序,結束演算法
if (noswap)
}}
而對於氣泡排序的時間複雜度,最佳情況則是乙個正序陣列,只需要比較i=0一次即可,所以最大時間複雜度為o(n);
而最壞的情況則是,最外層迴圈n-1次,內層for迴圈需比較n-i次,最多交換n-i次。所以最壞的情況的時間複雜度為n(n-1)/2求和,為o(n^2)。
排序演算法系列之氣泡排序
核心思想 氣泡排序是一種典型的 交換排序 通過比較相鄰元素大小來決定是否交換位置 如上圖所示,以一組資料 為例,進行氣泡排序的演算法演示 氣泡排序 c void swap int a,int b void bubblesort vector vi 演算法改進說明 1,對於是否已經是有序排列進行判斷 ...
排序系列 比較排序系列之 直接插入排序
最近在和小夥伴們一起研究排序,排序分好多總,後期會做整體總結,本篇則主要對插入排序進行乙個整理。插入排序 insert sorting 的演算法思想十分簡單,就是對待排序的記錄逐個進行處理,每個新紀錄與同組那些已排好序的記錄進行比較,然後插入到適當的位置。用三個字總結就是 多對一 的關係。插入排序分...
排序總結系列一 氣泡排序
氣泡排序步驟 設陣列長度為n 1 比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個資料交換。2 這樣對陣列的第0個資料到n 1個資料進行一次遍歷後,最大的乙個資料就 沉 到陣列第n 1個位置。3 n n 1,如果n不為0就重複前面二步,否則排序完成。氣泡排序1 void bubbleso...