記憶體中有乙個長陣列,條目數為10萬,陣列單元為結構體struct array,sizeof(struct array)為512位元組。結構有一int型成員變數weight。現需要取得按weight值從大到小排序的前500個陣列單元,請實現演算法,要求效率盡可能高。
解答:思路:這題屬於排序的內容,題目要求只排序前500個陣列單元,則在所有常用演算法中,堆排序不僅能實現要求,還能達到n*lg(n)的時間複雜度,相對較快。因此,用堆排序解決。
演算法如下:
1,將長陣列按照變數weight調整為最大堆
2,取第乙個元素和最後乙個元素交換
3,再執行1,2 總共迴圈500次
4,取陣列的最後500個元素,就是排序的前500個單元
百度筆試題 陣列重排
給定乙個存放整數的陣列,重新排列陣列使得陣列左邊為奇數,右邊為偶數。要求 空間複雜度o 1 時間複雜度為o n 注 題目 v july v 思路 我的想法是從兩邊遍歷,從左邊遍歷的如果是奇數就繼續留著,從右邊遍歷的如果是偶數就繼續留在右邊,如果是奇數就和從左邊遍歷遇到的第乙個偶數交換,我一下就有了思...
百度筆試題
一 選擇題 15分 共10題 1.在排序方法中,關鍵碼比較次數與記錄地初始排列無關的是 a.shell排序 b.歸併排序 c.直接插入排序 d.選擇排序 2.以下多執行緒對int型變數x的操作,哪幾個需要進行同步 a.x y b.x c.x d.x 1 3.void func 中,變數val的記憶體...
百度筆試題
一 選擇題 15分 共10題 1.已知乙個線性表 38,25,74,63,52,48 採用的雜湊函式為hash key key mod 7,將元素雜湊到表長為7的雜湊表中儲存。請選擇後面兩種衝突解決方法分別應用在該雜湊表上進行等概率成功查詢的平均查詢長度,拉鍊法 線性探測法 a.1.0 b.1.5 ...