經(jīng)典算法應(yīng)用之七----10億數(shù)據(jù)中取最大的100個(gè)數(shù)據(jù)

給出三種思路亚再,僅供參考郭膛。。
1.思路一:根據(jù)快速排序劃分的思想氛悬,每次分割之后只考慮比軸大的一部分则剃,知道比軸大的一部分在比100多的時(shí)候,采用傳統(tǒng)排序算法排序圆雁,取前100個(gè)忍级。
step1:遞歸對(duì)所有數(shù)據(jù)分成[a,b),(b,d]兩個(gè)區(qū)間伪朽,(b,d]區(qū)間內(nèi)的數(shù)都是大于[a,b)區(qū)間內(nèi)的數(shù)
step2:對(duì)(b,d]重復(fù) step1操作轴咱,直到最右邊的區(qū)間個(gè)數(shù)小于100個(gè)。注意[a,b)區(qū)間不用劃分
step3:返回上一個(gè)區(qū)間烈涮,并返回此區(qū)間的數(shù)字?jǐn)?shù)目朴肺。接著方法仍然是對(duì)上一區(qū)間的左邊進(jìn)行劃分,分為[a2,b2)坚洽,(b2,d2]兩個(gè)區(qū)間戈稿,取(b2,d2]區(qū)間。如果個(gè)數(shù)不夠讶舰,繼續(xù) step3操作鞍盗,如果個(gè)數(shù)超過(guò)100的就重復(fù) step1操作,直到最后右邊只有100個(gè)數(shù)為止跳昼。

復(fù)雜度為O(10億*100)

2.思路二:先取出前100個(gè)數(shù)般甲,維護(hù)一個(gè)100個(gè)數(shù)的最小堆,遍歷一遍剩余的元素鹅颊,在此過(guò)程中維護(hù)小頂堆就可以了敷存。
具體步驟如下:
step1:取前m個(gè)元素(例如m=100),建立一個(gè)小頂堆堪伍。保持一個(gè)小頂堆得性質(zhì)的步驟锚烦,運(yùn)行時(shí)間為O(lgm);建立一個(gè)小頂堆運(yùn)行時(shí)間為mO(lgm)=O(m lgm);
step2:順序讀取后續(xù)元素觅闽,直到結(jié)束。每次讀取一個(gè)元素涮俄,如果該元素比堆頂元素小蛉拙,直接丟棄;如果大于堆頂元素禽拔,則用該元素替換堆頂元素刘离,然后保持最小堆性質(zhì)。最壞情況是每次都需要替換掉堆頂?shù)淖钚≡囟闷埽虼诵枰S護(hù)堆的代價(jià)為(N-m)
O(lgm); 最后這個(gè)堆中的元素就是前最大的100個(gè)。時(shí)間復(fù)雜度為O(N lgm)茧痕。

復(fù)雜度為O(10億lg100)野来。
** 注:推薦采用這種算法。踪旷。
*

3.采用局部淘汰法曼氛。
具體步驟如下:
step1:選取前100個(gè)元素,并排序令野,記為序列L舀患。
step2:然后一次掃描剩余的元素x,與排好序的100個(gè)元素中最小的元素比气破,如果比這個(gè)最小的要大聊浅,那么把這個(gè)最小的元素刪除,并把x利用插入排序的思想现使,插入到序列L中低匙。依次循環(huán),知道掃描了所有的元素碳锈。

復(fù)雜度為O(10億*100)


推薦閱讀:
經(jīng)典算法應(yīng)用之一----歸并排序(微軟筆試題)
經(jīng)典算法應(yīng)用之二----基數(shù)排序(google筆試題)
經(jīng)典算法應(yīng)用之三----應(yīng)用二中題目的升華
經(jīng)典算法應(yīng)用之四(上)---基本位操作之算法篇
經(jīng)典算法應(yīng)用之四(中)---基本位操作之算法篇
經(jīng)典算法應(yīng)用之四(下)---百度面試題
經(jīng)典算法應(yīng)用之五---隨機(jī)生成和為S的N個(gè)正整數(shù)
經(jīng)典算法應(yīng)用之六---過(guò)橋問(wèn)題和過(guò)河問(wèn)題
經(jīng)典算法應(yīng)用之七----10億數(shù)據(jù)中取最大的100個(gè)數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末顽冶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子售碳,更是在濱河造成了極大的恐慌强重,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贸人,死亡現(xiàn)場(chǎng)離奇詭異间景,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)灸姊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門拱燃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人力惯,你說(shuō)我怎么就攤上這事碗誉≌偎唬” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵哮缺,是天一觀的道長(zhǎng)弄跌。 經(jīng)常有香客問(wèn)我,道長(zhǎng)尝苇,這世上最難降的妖魔是什么铛只? 我笑而不...
    開封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮糠溜,結(jié)果婚禮上淳玩,老公的妹妹穿的比我還像新娘。我一直安慰自己非竿,他們只是感情好蜕着,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著红柱,像睡著了一般承匣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锤悄,一...
    開封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天韧骗,我揣著相機(jī)與錄音,去河邊找鬼零聚。 笑死袍暴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的握牧。 我是一名探鬼主播容诬,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼沿腰!你這毒婦竟也來(lái)了览徒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤颂龙,失蹤者是張志新(化名)和其女友劉穎习蓬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體措嵌,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躲叼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了企巢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枫慷。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出或听,到底是詐尸還是另有隱情探孝,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布誉裆,位于F島的核電站顿颅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏足丢。R本人自食惡果不足惜粱腻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望斩跌。 院中可真熱鬧绍些,春花似錦、人聲如沸耀鸦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)揭糕。三九已至,卻和暖如春锻霎,著一層夾襖步出監(jiān)牢的瞬間著角,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工旋恼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吏口,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓冰更,卻偏偏與公主長(zhǎng)得像产徊,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蜀细,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 概述 排序有內(nèi)部排序和外部排序舟铜,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大奠衔,一次不能容納全部...
    蟻前閱讀 5,183評(píng)論 0 52
  • 前言 查找和排序算法是算法的入門知識(shí)谆刨,其經(jīng)典思想可以用于很多算法當(dāng)中。因?yàn)槠鋵?shí)現(xiàn)代碼較短归斤,應(yīng)用較常見痊夭。所以在面試中...
    寶塔山上的貓閱讀 1,086評(píng)論 1 21
  • 教你如何迅速秒殺掉:99%的海量數(shù)據(jù)處理面試題 本文經(jīng)過(guò)大量細(xì)致的優(yōu)化后,收錄于我的新書《編程之法》第六章中脏里,新書...
    Helen_Cat閱讀 7,415評(píng)論 1 39
  • 所以她我,很多東西都強(qiáng)調(diào)系統(tǒng)性學(xué)習(xí),都講究科班出身,大概就是這個(gè)意思番舆。信息也好只是也罷酝碳,只有系統(tǒng)才有價(jià)值。 但是合蔽,一般...
    peter_yuan_93閱讀 336評(píng)論 0 0
  • 這個(gè)世上什么樣的女人/女孩最難追又最令男人們傾慕拴事? 如果你有相沃斤、有錢、有才華刃宵、有夢(mèng)想衡瓶,那你就是這樣的女人。 女孩子...
    Tiannna閱讀 2,706評(píng)論 3 23