[請問] Quick sort 排序過程已回收

看板ask (問板)作者 (PT鄉民)時間11年前 (2014/07/28 19:49), 11年前編輯推噓2(2013)
留言15則, 3人參與, 最新討論串1/1
想請問一下Quick Sort排序過程,數值如下: 106,25,33,9,6,150,290,86,7,51,178,199 請問Pass1~Pass3分別是多少呢?? 我看過原始碼後還是不能理解他的交換步驟, 想請益有人知道的可以分享一下他的交換步驟吧 thanks!! -- ◢ ◣ ▊ ▊ ▊ ▊ ◢◣ ◢◣ ▊ ▊ ▊███ ◣ ◣ ◢█ L I N ◣ ▊ ▊ █◣ ▊◢ ◥◣ ▊ ▊ █◣ ▊ ▊ ▊ ▊ ▊ ◥◤ ▊ ▇▇ ◥◤ ▊ ▊ ▊◥◣▊◥ ▊ ▊▊◥◣▊ ▊ ▊ ▊ ▊ ▊ ▊ ▊ ▊ ▊ ◥▊ ◥◣ ▊ ▊▊ ◥▊ ▊ ▊ ▉ ▉ ▊ ▊ ▊ ▊ ◥◣█▆▆▊▊ ▊ ▊ ▊ ◥█ ψ █▇▇ ▊ ▊ ▊◣▅▇◤▊ ▊▊ ▊ ▊ ▊ ▊ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.113.191 ※ 文章網址: http://www.ptt.cc/bbs/ask/M.1406548143.A.84D.html

07/28 20:52, , 1F
有看過wiki的解說了嗎? http://ppt.cc/86a1
07/28 20:52, 1F

07/28 20:54, , 2F
Quick Sort有很多種版本 基本上抓個核心概念
07/28 20:54, 2F

07/28 20:55, , 3F
取一個pivot 經過某些交換 最後會讓左邊都小於pivot
07/28 20:55, 3F

07/28 20:57, , 4F
右邊都大於pivot 然後再divide&conquer對左右兩邊重複
07/28 20:57, 4F

07/28 20:58, , 5F
有錯請強者更正
07/28 20:58, 5F

07/28 21:11, , 6F
沒錯XD
07/28 21:11, 6F
想請教最基本的,抓第一個當Pivot後,如何跟其他數值做交換比較?並排序? ※ 編輯: APE36 (114.27.113.191), 07/28/2014 21:31:24

07/28 23:00, , 7F
可以到Youtube 搜尋看看 不少有趣的影片
07/28 23:00, 7F

07/28 23:59, , 8F
我接觸的第一版本是Hoare版 取最左邊當pivot
07/28 23:59, 8F

07/29 00:01, , 9F
然後從兩方向互找 左2(令為i)向右找比pivot大
07/29 00:01, 9F

07/29 00:01, , 10F
右一(另為j) 向左找比pivot小的值 找到後 兩數互換
07/29 00:01, 10F

07/29 00:03, , 11F
重覆這動作 直到i>=j 停止 最後pivot和j兩數互換 結束
07/29 00:03, 11F

07/29 00:05, , 12F
這一輪完成後 pivot該數的位置就可以固定了
07/29 00:05, 12F

07/29 00:07, , 13F
以原PO的例子來說 左1的106就會變成左8 也就是第8小
07/29 00:07, 13F

07/29 00:09, , 14F
然後做 左邊的25 33 9 6 86 7 51 完成後再做右邊
07/29 00:09, 14F

07/29 00:10, , 15F
↑ 跑完第1輪的順序不一定長這樣 實際跑才知道
07/29 00:10, 15F
文章代碼(AID): #1JrZYlXD (ask)
文章代碼(AID): #1JrZYlXD (ask)