好吧,我有一個任務找到使用幾種不同的方法列表中的第K個最小元素....查找使用分區列表中的第K個最小的元素 - 幫助我理解
第一種方法是對列表進行排序,然後返回第K個最小元素。容易,我的心態是說列表= 10個元素,排序列表按升序排列,然後在第10位返回元素
下一個方法使用快速排序的分區:
「第二種算法是應用Quicksort中使用的分區程序該過程對數組進行分區,以便所有小於某個數據透視表元素的元素都位於數組之前,並且所有大於該數據透視表元素的元素都位於數組之後。我們可以通過分區來解決選擇問題,直到數據項位於第k個時隙爲止,如果k小於pivotposition,則遞歸地劃分左側子數組,並且通過遞歸地劃分右側子數據庫ay如果k大於pivotposition。 。當k = pivotposition,我們完成」
說我有10項的列表:
3 8 9 2 4 5 1 7 10 6,其中5是樞轉..我知道我通常將具有2個陣列
3 2 4 1和8 9 7 10 6
,但我不理解的是:「我們可以通過分區解決選擇問題,直到樞軸產品在第k個插槽「。
什麼是第k個插槽?對我來說,我一直在想,kth =數組的長度,所以在這種情況下,10.其中有6個值,這顯然不是最低的......並且是不正確的。
有人可以使用這個樣本數組,只是告訴我這個算法的含義是什麼,以及它如何找到第k /最小的元素?謝謝
您重新定義_k_ midway:首先_k_是搜索元素的順序(potentialall y小於陣列的長度,例如當從1開始計數時,來自10元素數組的第二小元素的k = 2,然後你說_k_是數組的長度。第k個槽只是陣列中的第k個位置。 – 2012-03-03 02:16:34
好吧,清除了一些誤解..但我仍然困惑。說我的樣品數組,我們說我想找到第3個最小的元素,並且數據透視總是第一個項目..我想我不明白如何知道「什麼」是第三小元素,直到數組完全排序?我想我只是需要有人來展示給我,所以我明白... – user1189352 2012-03-03 02:23:28
我怎麼知道如果K小於或大於樞軸位置? – user1189352 2012-03-03 02:24:53