查看單個文章
  #4  
舊 2014-02-13, 09:13 PM
weiye 的頭像
weiye weiye 目前離線
進階會員
 
註冊日期: 2006-05-16
文章: 305
預設

例如五個數字原本由左至右為 ④, ⑤, ②, ③, ①

想要將它由左至右~ 變成從小到大的順序~

由 ④ 開始,將其依序與它左邊的 ⑤, ②, ③, ① 比大小,

如果發現對方比較小就交換位置~

       ④, ⑤, ②, ③, ①
       └──┘
第一次比較: 沒有比較小,不換


       ④, ⑤, ②, ③, ①
       └────┘
第二次比較: 有比較小,交換,變成 ②, ⑤, ④, ③, ①

       ②, ⑤, ④, ③, ①
       └───────┘
第三次比較: 沒有比較小,不換

       ②, ⑤, ④, ③, ①
       └─────────┘
第四次比較: 有比較小,交換,變成 ①, ⑤, ④, ③, ②

經過四次比較,可以挑出最小的放在最左邊,

       ①, ⑤, ④, ③, ②
         ^^^^^^^^^^^^^^還沒有挑選的

同上述程序,可以 "再" 經由三次比較挑出 ⑤, ④, ③, ② 中最小的,

放在這四個數字的最左邊,變成 ①, ②, ⑤, ④, ③

                   ^^^^^^^^^^還沒有挑選的

餘同理。

因此,五個數字的泡泡排序法,須經過 4+3+2+1 = 4*(4+1)/2 次比較,完成排序。

因此, n 個數字的泡泡排序法,須經過 (n-1)+(n-2)+(n-3)+....+2+1 = (n-1)*[(n-1)+1]/2 次比較,完成排序。
__________________
Life, it is. https://sky.tw
回覆時引用此篇文章