資料結構 面試題 找N個資料中最大的K個資料

2021-07-12 05:01:55 字數 659 閱讀 6749

如果不限定條件的話,這個問題還是很好解決的,但是當我們要求時間複雜度為o(n),空間複雜度為o(1)時,問題就沒那麼好解決了。

簡單的思路就是,建立乙個大小為k=100的小堆,調整好,然後從k開始拿十萬個資料乙個乙個跟堆頭比較,如果比堆頭大,就入堆,然後調整成最小堆,一直迴圈到第n=100000個資料。

void adjustdown(int* _a, size_t size,int i)

//與父節點做比較

if (_a[parent] > _a[child])

else

}}//找n個資料中的最大k個

int* getktop(int* a,size_t size,size_t n)

//建堆

for (int i = (size - 2) / 2; i >= 0; i--)

for (int i = 0; i < n - size; i++)

}return _a;

}void _adjustdown(int* a, size_t size, int i)

//拿父節點與最大子節點做比較

if (a[parent] < a[child])

else

}}

本文出自 「滴水」 部落格,請務必保留此出處

資料結構 面試題

python實現 寫個大概,import re def quick sort alist,first,last if first last return mid value alist first low first high last while low high while low mid va...

資料結構 面試題

2.棧2.2使用棧計算字尾表示式 2.3對棧的元素進行排序 2.4判斷表示式是否括號平衡 3.佇列 4.鍊錶 5.樹6.圖 7.字典樹 這是一種高效的樹形結構,但值得單獨說明 8.雜湊表 雜湊表 1.1 尋找陣列中第二小的元素 思路 公升序排序之後,輸出第二個數字 1.2 找到陣列中第乙個不重複出現...

mysql資料結構面試題 MySQL 面試題

mysql 的一些面試題,有的是平時聊到的,有的是聽別人說的,有的是工作中遇到的,特此彙總一下,有問有答。一條 sql 查詢語句執行流程?1 聯結器。客戶端和伺服器 tcp 握手後,驗證使用者名稱密碼。使用者名稱密碼通過後,聯結器會到許可權表中查詢你擁有的許可權。之後這個連線裡面的許可權判斷邏輯,都...