程式設計師面試寶典 20個有序陣列求最大500個元素

2021-08-15 10:38:29 字數 1009 閱讀 1719

題目:有20個陣列, 每個陣列裡面有500個數, 公升序排列, 求出這10000個數字中最大的500個。 求複雜度。

暴力法,直接將20個陣列中的資料全部合併,重新排序,然後取出最大的500個。

如果空間允許的情況下,排序的時間複雜度根據選擇的排序演算法來決定。

從20個陣列中各取乙個數,並記錄每個數的**陣列,建立乙個含20個元素的大根堆。

此時堆頂就是最大的數,取出堆頂元素,並從堆頂元素的**陣列中取下乙個數加入堆,再取最大值,一直這樣進行500次即可。

時間複雜度:500*log(20)

怎麼記錄每個數的**陣列?

用結構體記錄,乙個成員記錄值,乙個記錄**,按成員值比較

也可以單獨用乙個陣列儲存。

/*

原題:有20個陣列,每個陣列裡面有500個數,公升序排列,求出這10000個數中最大的500個,求複雜度。

演算法實現:為簡化,設有5個陣列,每個陣列裡面有10個數,公升序排列,求出50個數中最大的5個數。

*/#include

using

namespace

std;

void creatheap(int s,int n) //建堆,最大堆即首元素是最大的

else

break;}}

}int main()

, ,,,

};int b[5]=;//作為標記當前取該陣列的哪個

int temp[5];

int count=0;

int result[10];

for(int m=0;m<10;m++)

creatheap(temp,5);//需要標記最大的值temp[0]在那個陣列中

int max=temp[0];

result[count++]=max;

for(int i=0;i<5;i++)}}

for(int i=0;i<10;i++)

}

程式設計師面試寶典

據統計,80 的簡歷都是不合格的。不少人事管理者抱怨收到的許多簡歷在格式上很糟糕。簡歷應該如何做到在格式上簡潔明瞭,重點突出?求職信應該如何有足夠的內容推銷自己?如何控制長度,言簡意賅?相信讀了本章你會對簡歷的撰寫有乙個新的認識。2.1 簡歷注意事項 1 簡歷不要太長 一般的簡歷普遍都太長。其實簡歷...

《程式設計師面試寶典》摘記

簡歷注意事項 1.簡歷不要太長 中文簡歷壓縮在 2頁左右就可以把所有的內容突出了。一般來說學習經歷應該從大學開始寫起。2.如實填寫。3.不要過分謙虛,不要把自己的一切包括弱項都寫進去。4.求職簡歷上一定要註明求職的職位。根據所申請的職位來設計,突出你在這方面的優點。編寫乙份或者幾份有針對性的簡歷。5...

程式設計師面試寶典一

1 int i i 首先宣告乙個變數i,然後將變數i的值 未初始化 賦值給自己 2 下面 的意義 void func int x,int count 求乙個整數轉換為二進位制之後包含多少個1 3 printf在vc6.0下是自右向左運算的 好像跟編譯器有關 int arr int ptr arr p...