close
比我想像中的還要難上許多……
老師給的ex我只能說是piece of cake.
第一種就是ex.
由小到大,最大數不是頭,也沒有重複的數字。
**找到>k的數字為i,<k的數字為j.
***當i和j的順序交換,等於i在j的右邊時,j和k交換
題目:① | 54 | 21 | 91 | 55 | 29 | 82 | 35 | 83 | 25 | 87 | 設54=k,21=i→,87=←j |
k | i→ | (i) | (j) | ←j | 91=i(>k),25=j(k<) | ||||||
② | 54 | 21 | 25 | 55 | 29 | 82 | 35 | 83 | 91 | 87 | |
k | i→ | (i) | (j) | ←j | |||||||
③ | 54 | 21 | 25 | 35 | 29 | 82 | 55 | 83 | 91 | 87 | 55=i(>k),35=j(k<) |
k | i→ | (j) | (i) | ←j | *** | ||||||
④ | 29 | 21 | 25 | 35 | 54 | 82 | 55 | 83 | 91 | 87 | 將54當作分割點,分成兩半 |
k | i→ | (j) | ←j (i) | 先做54的左邊 | |||||||
⑤ | 25 | 21 | 29 | 35 | 54 | 82 | 55 | 83 | 91 | 87 | 29也當作一個分割點 (所以35不用動) |
⑥ | 21 | 25 | 29 | 35 | 54 | 82 | 55 | 83 | 91 | 87 | 54的左半邊完成 |
k | i→ (j) | (i) | ←j | 設82=k,55=i→,87=←j i在j的左邊→j和k交換 | |||||||
⑦ | 21 | 25 | 29 | 35 | 54 | 55 | 82 | 83 | 91 | 87 | 82為一個點 |
82 | k (j) | i→ (i) | ←j | 設83=k,91=i→,87=←j i在j的左邊→j和k交換 | |||||||
⑧ | 21 | 25 | 29 | 35 | 54 | 55 | 82 | 83 | 91 | 87 | |
⑨ | 21 | 25 | 29 | 35 | 54 | 55 | 82 | 83 | 87 | 91 |
老師教的步驟是當分割點出現才開始算。
不過這樣子到後面另一種亂數排序的時候,誰能告訴我要怎麼分步驟呢?
所以我是照課本的步驟去標數字。
另一種,有兩個相同變數,第一個數=最大數
(待補)
全站熱搜
留言列表