作者secondsee (漂流木)
看板C_and_CPP
標題Re: [問題] 利用指標完成quicksort
時間Mon Mar 22 11:33:24 2010
: 接著 *front <= meddle 所以 front++
: front last
: | |
: +---+---+---+---+---+---+
: | 2 | 1 | 3 | 3 | 4 | 5 |
: +---+---+---+---+---+---+
: meddle:3
: 直到
: last front
: | |
: +---+---+---+---+---+---+
: | 2 | 1 | 3 | 3 | 4 | 5 |
: +---+---+---+---+---+---+
: meddle:3
: 然後 swap(*last,*front)
: last front
: | |
: +---+---+---+---+---+---+
: | 2 | 1 | 4 | 3 | 3 | 5 |
: +---+---+---+---+---+---+
: meddle:3
: 你會發現, 這個演算法根本就不正確... ̄▽ ̄||
while(
last > front){
while(*last >= meddle) last--; swap(*front,*last);
while(*front <= meddle) front++; swap(*last,*front);
}
這是我進行swap的條件
我想說只要last的位址大於front的條件成立
才可進行您的精美插圖的最後一步
ps:c&cpp版 真的很溫馨 用圖真的會比較好看
真的很感謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.27.146.174
推 dendrobium:你的swap 只要一進到while(last > front) 就必定會執行 03/22 11:36
推 MMAXo:請正常使用大括號.....是這樣吧 = =" 03/22 11:39
→ VictorTom:括號是好物....XD 03/22 11:47
→ rephansu:用手算input[]={1,2}的結果,就會知道有"="就會違規存取 03/22 11:54
→ secondsee:我知道了…原來是會跑到input[-1]去, 非常感謝 03/22 11:58
→ secondsee:也謝謝 回文的各位m(_ _)m 03/22 11:59
→ secondsee:十二誡第二條 原以為不會犯的= = 03/22 12:02
→ uranusjr:甚麼時候悄悄從 11 又變 12 了...XD 03/22 13:11