原文:(算法)從10000個數中找出最大的10個

從 個整數中找出最大的 個,最好的算法是什么 算法一:冒泡排序法 千里之行,始於足下。我們先不說最好,甚至不說好。我們只問,如何 從 個整數中找出最大的 個 我最先想到的是用冒泡排序的辦法:我們從頭到尾走 趟,自然會把最大的 個數找到。方法簡單,就不再這里寫代碼了。這個算法的復雜度是 N N 。 算法二: 有沒有更好一點的算法呢 當然。維持一個長度為 的降序數組,每一個從數組拿到的數字都與這個降 ...

2013-03-20 21:10 10 19235 推薦指數:

查看詳情

面試題-10個數找出最大10000個數(top K問題)

一個較好的方法:先拿出10000個建立小根堆,對於剩下的元素,如果大於堆頂元素的值,刪除堆頂元素,再進行插入操作,否則直接跳過,這樣知道所有元素遍歷完,堆10000個就是最大10000個。時間復雜度: m + (n-1)logm = O(nlogm) 優化的方法:可以把所有10個數據分組 ...

Fri Mar 06 04:19:00 CST 2020 0 1808
利用最小堆找出10個數最大10000個數

最小堆 最小堆是一種完全二叉樹,特點是根節點比兩個子節點都小(或者根節點比子節點都大) 過程 先找10000個數構建最小堆 依次遍歷10個數,如果比最小堆的最小值大,則替換這個最小值,並重新構建最小堆 最后輸入10000個值 時間復雜度 構建最小堆的復雜度為 logn ...

Tue May 01 18:53:00 CST 2018 0 2403
如何從100萬個數找出最大的前100個數

1. 算法如下:根據快速排序划分的思想 (1) 遞歸對所有數據分成[a,b)b(b,d]兩個區間,(b,d]區間內的都是大於[a,b)區間內的 (2) 對(b,d]重復(1)操作,直到最右邊的區間個數小於100個。注意[a,b)區間不用划分 (3) 返回上一個區間,並返回此區間的數字 ...

Mon Apr 02 08:12:00 CST 2018 0 1257
100億個數找出最大10

1、首先一點,對於海量數據處理,思路基本上是確定的,必須分塊處理,然后再合並起來。 2、對於每一塊必須找出10最大,因為第一塊10最大的最小的,可能比第二塊10最大最大的還要大。 3、分塊處理,再合並。也就是Google MapReduce 的基本思想。Google ...

Sun Mar 02 23:58:00 CST 2014 2 13785
找出個數組中出現次數最大

描敘:一大堆數據里面,數字與數字之間用空格隔開,找出出現次數最多的一個數字的算法 #include<stdio.h> void FindMostTimesDigit(int *Src , int SrcLen) { int element , has = SrcLen ...

Sat Jul 20 04:54:00 CST 2013 0 4774
找出2n+1個數不成對的那個

問題定義:有2n+1個數,只有一個單着,別的都是成對的,找出這個單着的。比如:2 1 3 2 1。3是答案。 思路一:暴力搜索——每個數都和其他比較,找不到相同的,就得到了結果。時間復雜度為o(n2) 思路二:排序搜索——先給序列排個序,之后從前往后一對一對的找,直到不是成對的為止 ...

Thu Apr 04 06:42:00 CST 2013 13 2320
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM