[問題] 用c++實現quick select

看板C_and_CPP作者 (wi)時間14年前 (2011/05/16 22:25), 編輯推噓1(1020)
留言21則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) code::block 問題(Question): 如果pivot第一次就指向正確的結果,那回傳的值就是正確的 但是如果第一次不是指向正確的,那之後的結果就會錯誤 餵入的資料(Input): 預期的正確結果(Expected Output): 得到正確的第kth小的數值 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) http://nopaste.csie.org/e930f 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.125.20.92 ※ 編輯: diabloevagto 來自: 140.125.20.92 (05/16 22:26)

05/16 22:34, , 1F
怎麼會那麼多 stack Orz
05/16 22:34, 1F

05/16 22:37, , 2F
我是拿來存小於、等於、大於,三個數值= =
05/16 22:37, 2F
※ 編輯: diabloevagto 來自: 140.125.20.92 (05/16 22:40)

05/16 23:37, , 3F
研究不出來...真的很詭異 = =
05/16 23:37, 3F

05/17 00:10, , 4F
參考一下其他人寫的 quicksort 吧 兩者其實很像
05/17 00:10, 4F

05/17 00:12, , 5F
好泛型, 不用嗎?
05/17 00:12, 5F

05/17 00:12, , 6F
你目前的寫法並沒有寫出 quick select 的精神
05/17 00:12, 6F

05/17 00:30, , 7F
不好意思,泛型打算等寫出來之後把他加入。
05/17 00:30, 7F

05/17 00:32, , 8F
請問quick select的精神是遞迴嗎?之前看quick sort
05/17 00:32, 8F

05/17 00:32, , 9F
我記得都是用遞迴跟分治。
05/17 00:32, 9F

05/17 00:33, , 10F
請問有沒有高手可以指點一下我這個程式,錯誤大概是
05/17 00:33, 10F

05/17 00:33, , 11F
那個方向呢...檢查滿久了,麻煩了!
05/17 00:33, 11F

05/17 00:35, , 12F
得寫的像這樣才對: http://goo.gl/7xaZF
05/17 00:35, 12F

05/17 08:57, , 13F
http://goo.gl/WHRLx 大概像這樣
05/17 08:57, 13F

05/17 09:59, , 14F
你程式碼問題應該出在, LEG 是靜態的, 在遞迴呼叫時
05/17 09:59, 14F

05/17 09:59, , 15F
沒有把它們全部清空
05/17 09:59, 15F

05/17 12:38, , 16F
把satic拿掉跟把stack先清空我都試過了...一樣不能說
05/17 12:38, 16F

05/17 15:33, , 17F
其實問題是在於,遞迴之後,return呢?
05/17 15:33, 17F

05/17 15:35, , 18F
其他小細節在L,E,G要清空.
05/17 15:35, 18F

05/17 17:08, , 19F
我目前改成static然後每次都清空,但這樣還是不能...
05/17 17:08, 19F

05/17 17:08, , 20F
在多研究看看,感謝大家http://codepad.org/KHKwWQyg
05/17 17:08, 20F

05/17 17:19, , 21F
嗯,我直接丟掉static改用自動變數就OK啊
05/17 17:19, 21F
文章代碼(AID): #1DqJF45M (C_and_CPP)