原文:利用最小堆找出10億個數中最大的10000個數

最小堆 最小堆是一種完全二叉樹,特點是根節點比兩個子節點都小 或者根節點比子節點都大 過程 先找 個數構建最小堆 依次遍歷 億個數,如果比最小堆的最小值大,則替換這個最小值,並重新構建最小堆 最后輸入 個值 時間復雜度 構建最小堆的復雜度為 logn,求出最大m個數會構建m次最小堆,時間復雜度為 m logm, 這里m為 進行n次時間復雜度為n,這里n為 億,總時間復雜度為 n m logm,即 ...

2018-05-01 10:53 0 2403 推薦指數:

查看詳情

面試題-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個數(top K問題)

前兩天面試3面學長問我的這個問題(想說TEG的3個面試學長都是好和藹,希望能完成最后一面,各方面原因造成我無比想去鵝場的心已經按捺不住了),這個問題還是建立最小堆比較好一些。 先拿10000個數建堆,然后一次添加剩余元素,如果大於堆頂的10000中最小的),將這個數替換堆頂 ...

Sat Feb 16 04:10:00 CST 2019 2 5644
(算法)從10000個數找出最大10

  從10000個整數中找出最大10個,最好的算法是什么? 算法一:冒泡排序法   千里之行,始於足下。我們先不說最好,甚至不說好。我們只問,如何“從10000個整數中找出最大10個”?我最先想到的是用冒泡排序的辦法:我們從頭到尾走10趟,自然會把最大10個數找到。方法簡單,就不再這里寫 ...

Thu Mar 21 05:10:00 CST 2013 10 19235
輸入10個整數,將其中最小與第一個數對換, 把最大與最后一個數對換

輸入10個整數,將其中最小與第一個數對換, 把最大與最后一個數對換。 點我看視頻講解+可運行代碼,記得收藏視頻,一鍵三連 寫3個函數: ①輸人10個數; ②進行處理; ③輸出10個數。 解題思路: 在進行數值逐個比較的同時找到最小值的空間地址以及最大值的空間地址,使用這兩個空間 ...

Fri Jul 10 02:31:00 CST 2020 0 874
輸入10個整數,將其中最小與第一個數對換, 把最大與最后一個數對換

輸入10個整數,將其中最小與第一個數對換, 把最大與最后一個數對換 寫3個函數: ①輸人10個數; ②進行處理; ③輸出10個數。 解題思路: 在進行數值逐個比較的同時找到最小值的空間地址以及最大值的空間地址,使用這兩個空間中的數據最終與第一和最后數據進行對換即可。 答案: ...

Tue Jul 28 00:24:00 CST 2020 0 770
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM