聲明:本文最初發表於《電腦編程技巧與維護》2006年第5期,版本所有,如蒙轉載,敬請連此聲明一起轉載,否則追究侵權責任。網上發表於戀花蝶的博客http://lanphaday.bokee.com 題目:從1億個整數數中找出最大的1萬個。 拿到這道題,馬上就會想到的方法是建立一個數 ...
. 算法如下:根據快速排序划分的思想 遞歸對所有數據分成 a,b b b,d 兩個區間, b,d 區間內的數都是大於 a,b 區間內的數 對 b,d 重復 操作,直到最右邊的區間個數小於 個。注意 a,b 區間不用划分 返回上一個區間,並返回此區間的數字數目。接着方法仍然是對上一區間的左邊進行划分,分為 a ,b b b ,d 兩個區間,取 b ,d 區間。如果個數不夠,繼續 操作,如果個數超過 ...
2018-04-02 00:12 0 1257 推薦指數:
聲明:本文最初發表於《電腦編程技巧與維護》2006年第5期,版本所有,如蒙轉載,敬請連此聲明一起轉載,否則追究侵權責任。網上發表於戀花蝶的博客http://lanphaday.bokee.com 題目:從1億個整數數中找出最大的1萬個。 拿到這道題,馬上就會想到的方法是建立一個數 ...
版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/jj12345jj198999/article/details/17169559 ...
1、首先一點,對於海量數據處理,思路基本上是確定的,必須分塊處理,然后再合並起來。 2、對於每一塊必須找出10個最大的數,因為第一塊中10個最大數中的最小的,可能比第二塊中10最大數中的最大的還要大。 3、分塊處理,再合並。也就是Google MapReduce 的基本思想。Google ...
從10000個整數中找出最大的10個,最好的算法是什么? 算法一:冒泡排序法 千里之行,始於足下。我們先不說最好,甚至不說好。我們只問,如何“從10000個整數中找出最大的10個”?我最先想到的是用冒泡排序的辦法:我們從頭到尾走10趟,自然會把最大的10個數找到。方法簡單,就不再這里寫 ...
一個較好的方法:先拿出10000個建立小根堆,對於剩下的元素,如果大於堆頂元素的值,刪除堆頂元素,再進行插入操作,否則直接跳過,這樣知道所有元素遍歷完,堆中的10000個就是最大的10000個。時間復雜度: m + (n-1)logm = O(nlogm) 優化的方法:可以把所有10億個數據分組 ...
原題如下: 有一個100G大小的文件里存的全是數字,並且每個數字見用逗號隔開。現在在這一大堆數字中找出100個最大的數出來。 我認為,首先要摸清考官的意圖。是想問你os方面的知識,還是算法,或者數據結構。 如果是os: 無疑是外排序算法的選擇。100g文件在當前的環境下是無法全部讀入 ...
最近找實習, 在做Test Assignment時遇到了這么道題, 就順便記錄下來:說, 有1到100共100個數, 擺成一個圈. 從1開始, 每隔1, 2, 3, 4 ... 個數拿走一個數, 一直循環, 最后剩下幾? 具體的講就是一開始(隔0個數)把 1 拿走, 隔1個數(2)把3拿走, 再隔 ...