→ walks:^^ 01/24 12:58
※ 引述《walks (蹦蹦跳跳)》之銘言:
: 再寫題目 有點問題
: 不懂 它的基值 是怎要挑選出來的
: 查了維基
: 從數列中挑出一個元素,稱為 "基準"(pivot),
: 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準
: 的後面(相同的數可以到任一邊)。在這個分割之後,該基準是它的最後位置。這個稱為
: 分割(partition)操作。
: 這是題目
: http://www.postimage.org/image.php?v=Pqcmhlr
: 因為答案是 29 28 22 21 6 12 36
: 不太懂是怎樣選出來的 > < 謝謝
從程式碼 int parti() 裡面的第一行
int v = b[b2];
可以看的出 pivot 是取最後一個數
10 12 3 6 38 36 22 28 26 21 29
step1 10 12 3 6 21 26 22 28 29 38 36
step2 10 12 3 6 21 26 22 28 29 38 36
step3 10 12 3 6 21 22 26 28 29 38 36
step4 10 12 3 6 21 22 26 28 29 38 36
step5 3 6 10 12 21 22 26 28 29 38 36
step6 3 6 10 12 21 22 26 28 29 38 36
step6 3 6 10 12 21 22 26 28 29 36 38
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.53.80