我們學習排序演算法時,最先學習的一定有氣泡排序。它最簡單、好理解,所以再不考慮複雜度的情況下也是很常用的排序演算法(我經常用 畢竟 兩個for巢狀 乙個swap 嘛,很好記)接下來我們來看看它的演算法思路。
先不談別的,先談一談為什麼叫氣泡排序。
我們來看《啊哈!演算法》中萌萌的插圖,方便理解。
想象陣列中的數無序排列,每個數就好似水中的氣泡。比較相鄰兩個氣泡(數)的大小,此時暫定陣列為,所以一開始比較的是12和35,發現35比12大,所以12浮了上去(12與35互換位置 swap)。如圖,完成一趟操作後,12浮到了水面(排在了最前面),接下來只用迴圈操作即可,迴圈時考慮到排過的就不排了,所以之後每次迴圈比較的次數都會-1。其實不管浮到水面還是沉到水底,都是乙個意思。
說專業一點:
(1)比較相鄰的前後兩個資料,如果前面資料大於後面的資料,就將兩個資料交換;
(2)這樣對陣列的第0個資料到n-1個資料進行一次遍歷後,最大的乙個資料就到了最後乙個位置,也就是下標為n-1的位置(沉到了水底)。
(3)n = n-1,如果n不為0就重複(1)(2)兩步,否則排序完成,也就是對陣列的第0個資料到n-2個資料再次進行遍歷;
**如下:
#include void swap(int*, int*);
void bubblesort(int*, int);
//交換兩個數的值
void swap(int *a, int *b)
//氣泡排序
void bubblesort(int arr, int len)}}
}int main();
bubblesort(array,5);
for(int i = 0; i < 5; i++)//會輸出12 18 35 76 99
return 0;
}
熟記氣泡排序,在很多不考慮複雜度的情況下能很快完成排序**的編寫(當然直接包含演算法庫,呼叫sort()更快...)
氣泡排序演算法 C 氣泡排序演算法排序詳解
氣泡排序是最簡單的排序方法,理解起來容易。雖然它的計算步驟比較多,不是最快的,但它是最基本的,初學者一定要掌握。c 氣泡排序演算法的例項源 一些排序方法的 集錦,該函式模板使用冒泡法對集合元素進行排序,引數說明 collection 集合物件,集合物件必須提供 操作。element 集合元素,該引數...
氣泡排序 氣泡排序演算法優化
常用的排序演算法主要包括 1 插入排序 直接插入排序 希爾排序 2 交換排序 氣泡排序 快速排序 3 選擇排序 簡單選擇排序 堆排序快速排序 4 歸併排序其中,氣泡排序算是最簡單的一種排序演算法 public class bubble int temp 0 for int i 0 iarr j 1 ...
排序演算法 氣泡排序
一.氣泡排序的過程 公升值排序 1.將第乙個記錄的關鍵字與第二個記錄的關鍵字進行比較,若key 1 key 2 則交換。然後比較第二個與第三個,依此類推,直到第n 1個與第n個比較為止,第一趟排序完後,記錄最大的關鍵字會被排在最後面。2.將記錄的前n 1個關鍵字進行第二趟比較交換,直到前n 1個中最...