1. 程式人生 > >氣泡排序、快速排序、插入排序、選擇排序、堆排序(更新中)

氣泡排序、快速排序、插入排序、選擇排序、堆排序(更新中)

1.各個排序演算法比較   

   

2.氣泡排序

氣泡排序演算法的原理如下:

  1. 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。

  2. 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

  3. 針對所有的元素重複以上的步驟,除了最後一個。

  4. 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

氣泡排序演算法的時間複雜度

氣泡排序最好的時間複雜度為   ,氣泡排序總的平均時間複雜度為  。

氣泡排序程式碼示例

void bubble_sort(int a[], int n)
{
    int i, j, temp;
    for (j = 0; j < n - 1; j++)
        for (i = 0; i < n - 1 - j; i++)
        {
            if(a[i] > a[i + 1])
            {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }
}

氣泡排序演算法的過程演示

1.初始情況,比較8、9,不進行交換

2.比較9、6進行交換

3.比較9、5進行交換

     

經過第一輪交換,最大值9移動到陣列的末尾,接下來進行第二次迴圈。從8至5進行排序。由第一輪迴圈可知,最大值8移動到了9前面。

第三次迴圈,五六進行位置交換

至此氣泡排序完成。