氣泡排序(從小到大)
演算法思想:遍歷一n個資料的陣列,比較相鄰資料的大小,把小值放前面,大值放後面,比較數次後,該組資料由小到大排列。假設最小值在最後乙個位置,則須經過n-1次才能把最小值交換到第一位,即比較次數最多為n-1次。
對於內迴圈的迴圈不變式
初始化:第一次遍歷前,in_index之前沒有值,顯然滿足小值在前,大值在後;
保持:第k次遍歷前,in_index = k,在k之前的值均保持小值在前,大值在後;
終止:遍歷n-1次後,比較了所有資料,迴圈結束,
對於外迴圈的迴圈不變式
初始化:第一次遍歷前,out_index之前沒有對資料進行任何操作,即排序後的資料為空,顯然滿足相鄰之間小值在前,大值在後;
保持:第k次遍歷前,out_index = k,由於內迴圈的迴圈不變式,可以證明經過k-1次的操作,資料滿足相鄰之間小值在前,大值在後;
終止:遍歷n-1次,可以保證每一位資料均與另外n-1個資料進行了比較並進行了交換,迴圈結束。
最壞時間複雜度:o(n2)
**如下:
#include #define maxsize 10
void print(int array);
void bubble_sort(int array);
/** * 列印程式
*/void print(int array)
printf("\n");
}/**
* 氣泡排序,從小到大排序
*/void bubble_sort(int array)
in_index --;
}out_index++;
}}/**
* 主程式
*/int main()
;//待排序的陣列
printf("oringin array: ");
print(array);
bubble_sort(array);
printf("sort array: ");
print(array);
return 0;
}
C語言 排序演算法之氣泡排序
氣泡排序 bubble sort 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。維基百科 氣泡排...
排序演算法之氣泡排序(C語言)
我們採用傳統的三段式思維來學習 是什麼?為什麼?怎麼做?氣泡排序 bubble sort 是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序 如從大到小 首字母從z到a 錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就...
C語言排序演算法之氣泡排序
氣泡排序 bubble sort 是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序 如從大到小 首字母從z到a 錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。這個演算法的名字由來是因為越小...