回覆列表
  • 1 # 年輪978865

    氣泡排序的原理是:從左到右,相鄰元素進行比較。每次比較一輪,就會找到序列中最大的一個或最小的一個。這個數就會從序列的最右邊冒出來。以從小到大排序為例,第一輪比較後,所有數中最大的那個數就會浮到最右邊;第二輪比較後,所有數中第二大的那個數就會浮到倒數第二個位置……就這樣一輪一輪地比較,最後實現從小到大排序。比如對下面這個序列進行從小到大排序:

    90 21 132 -58 34

    第一輪:1) 90 和 21比,90>21,則它們互換位置:

    21 90 132 -58 34

    2) 90 和 132 比,90<132,則不用交換位置。3)132 和 –58 比,132>–58,則它們互換位置:

    21 90 -58 132 34

    4)132 和 34 比,132>34,則它們互換位置:

    21 90 -58 34 132

    到此第一輪就比較完了。第一輪的結果是找到了序列中最大的那個數,並浮到了最右邊。比較時,每輪中第 n 次比較是新序列中第 n 個元素和第 n+1 個元素的比較(假如 n 從 1 開始)。第二輪:1) 21 和 90 比,21<90,則不用交換位置。2) 90 和 –58 比,90>–58,則它們互換位置:

    21 -58 90 34 132

    3) 90 和 34 比,90>34,則它們互換位置:

    21 -58 34 90 132

    到此第二輪就比較完了。第二輪的結果是找到了序列中第二大的那個數,並浮到了最右邊第二個位置。第三輪:1) 21 和 –58 比,21>–58,則它們互換位置:

    -58 21 34 90 132

    2) 21 和 34 比,21<34,則不用交換位置。到此第三輪就比較完了。第三輪的結果是找到了序列中第三大的那個數,並浮到了最右邊第三個位置。第四輪:1) –58 和 21 比,–58<21,則不用交換位置。至此,整個序列排序完畢。從小到大的序列就是“–58 21 34 90 132”。從這個例子中還可以總結出,如果有 n 個數據,那麼只需要比較 n–1 輪。而且除了第一輪之外,每輪都不用全部比較。因為經過前面輪次的比較,已經比較過的輪次已經找到該輪次中最大的數並浮到右邊了,所以右邊的數不用比較也知道是大的。

  • 中秋節和大豐收的關聯?
  • 胃炎可以吃山藥嗎?