我在這裏是新手,我有一個問題困擾着我。我是初學者,所以請不要嘲笑我。 我想對大量元素進行遞歸快速排序,比方說100000.我知道這會導致堆棧溢出。我過去幾天一直在搜索Google,試圖找到一種方法來管理調用堆棧。不能真正找到一個好的信息來源。 我的理念是刪除每個遞歸調用的返回地址,除了最後一個,它將返回到第一個函數調用。我不知道這是否可能,或者如果它是這個問題的另一個解決方案。C - 用遞歸方法管理調用堆棧
P.S. :我想保持quicksort遞歸。
對不起,如果我的問題看起來很愚蠢,但我可以appreaciate任何相關的答案。 對不起,我的英語不好。 謝謝!
發表一些代碼。如果遞歸可以被尾調用,你可能可以使其工作。 – 2012-04-03 23:40:02
有兩件事會幫助;選擇數據透視表時不要使用簡單的方法,並且總是首先在較小的分區上重現。 – Blastfurnace 2012-04-03 23:40:07
如果您選擇了一個體面的關鍵點,那麼在遞歸深度成爲問題之前就會耗盡內存。然後深度是數組大小的對數。 – 2012-04-03 23:42:03