借组磁带机求第K小元素
生活随笔
收集整理的這篇文章主要介紹了
借组磁带机求第K小元素
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果輸入在磁帶機上, 你的機器只有一個磁帶機驅動器和幾十字的內存,如何找第K小的數 1. 遍歷一遍磁帶,隨即選擇一個數M 2. 再遍歷一遍磁帶, 計算大于和小于M的個數,這樣就可以獲得數M在總序列中的排名,這里考慮到可能有重復元素所以要統計大于和小于的個數 3. 如果M的排名正好為所求,則結束;否則如果M的排名大于K,則下次遍歷磁帶時隨即選擇一個小于M的數,統計它的排名;如果M的排名小于K,下次遍歷磁帶的時候隨即選擇一個大于M的數,統計排名 4. 經過步驟3,所選數的范圍縮小,最后就能找到所要求的數 5. 最多遍歷磁帶2logN次, 每次遍歷時間O(n),總時間復雜度為O(nlogn) 目前求第K小的數,比較好的算法時間復雜度為O(n),常數大概為3.4
轉載于:https://www.cnblogs.com/qianye/archive/2012/11/24/2786367.html
總結
以上是生活随笔為你收集整理的借组磁带机求第K小元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】高性能前端3-高性能javascr
- 下一篇: 如何在MFC中读写配置文件