算法學習與代碼實現4——冒泡排序
這篇博客講最簡單的一個排序算法,也是我生命中接觸的第一個排序算法。
算法思路
想當年讀大一的時候學習C語言,冒泡排序是C語言課上講的第一個排序算法,可能也是唯一一個。
思路很有趣,爲了確保序列從小到大排列,從最後兩個數開始,依次比較相鄰的兩個數,如果需要交換,就將兩個數進行交換。這種比較依次向前,直到前面的數都已經是排好序的數爲止。這樣一趟一趟的進行比較,每一趟都將最小的數“擠”到最前面。
算法性能
穩定性:穩定排序
時間複雜度: O(n^2)
空間複雜度: O(1)
僞代碼
BUBBLESORT(A)
for i <- 1 to length[A]
do for j <- length[A] downto i + 1
do if A[j] < A[j - 1]
then exchange A[j] <-> A[j-1]
算法思路很很簡單,就是把小的往前擠。
c語言實現
void bubble_sort(int *array, int size){
int tmp;
for ( int i = 0; i < size; i++ ) {
for ( int j = size - 1; j > i; --j ) {
if ( array[j] < array[j-1] ) {
tmp = array[j];
array[j] = array[j-1];
array[j-1] = tmp;
}
}
}
}