我已經實現了一個使用兩個堆棧的隊列,我想查找隊列中前N%的元素。隊列中前n個元素
例如:
的隊列中取出該元件以該順序{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
前10%的元素是指在20 = 2
10%因此,答案應該是19和20
有是我能想到的兩種方式
- 對隊列進行排序,將項目數(X)分成N%和th抓住頂部的X元素。
- Selection algorithm。 (我只是碰到這個算法及其基於快速排序的想法,所以我可能要在整個隊列複製到一個數組,然後應用算法)
有沒有什麼更好的辦法來解決這個問題?
「我已經使用兩個堆棧實現了一個隊列」您對純功能解決方案感興趣還是僅僅是一個練習? – 2014-09-10 15:18:04
這只是一個練習。即使是比較算法的想法也可以。我上面的兩種方法是O(nlogn)和O(n)。平均而言,兩者似乎都相當快。然而,我想知道一個更好的方法來做到這一點,或者很簡單,如果這些是唯一的兩種方法,我是否應該使用選擇算法 – 2014-09-10 15:28:04
您是否正在尋找MAXQUEUE的總結,它可以始終提供MAX中的O(1 )?在這種情況下,對於給定的隊列實例,N是固定值嗎? – rici 2014-09-10 16:01:18