快速排序算法詳細(xì)圖解 一道java面試題,20億數(shù)字的文本排序,如何取前100?
一道java面試題,20億數(shù)字的文本排序,如何取前100?這是TOPK的經(jīng)典問題。首先取前100個數(shù)字構(gòu)建一個最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時調(diào)整堆。堆中最后100個元素就是結(jié)果??臻g復(fù)
一道java面試題,20億數(shù)字的文本排序,如何取前100?
這是TOPK的經(jīng)典問題。首先取前100個數(shù)字構(gòu)建一個最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時調(diào)整堆。堆中最后100個元素就是結(jié)果??臻g復(fù)雜度是k,時間復(fù)雜度是nlogk
讀他的書時感到頭暈是很正常的,因為大多數(shù)中國教授都不在乎你能不能聽懂。他們關(guān)心的是教材是否更具“學(xué)術(shù)性”。他們不好意思打招呼沒有希臘字母的公式。當(dāng)你介紹計算機語言時,你能很快理解教授的水平如何表現(xiàn)嗎?可憐的上帝,我看到了發(fā)明C語言的上帝。讀他的書,我懷疑他是否會說C語言。。。在網(wǎng)上閱讀Arduino的教程,把軟硬件結(jié)合起來學(xué)習(xí),先了解基本的硬件,再了解軟件是如何控制硬件的,這樣才能真正學(xué)會理解C語言。。。
大一軟件工程學(xué)生,看完了譚浩強的書,越看越迷茫,感覺并沒什么用,什么大程序都不會編,求指點?
快速排序原則:選擇一個鍵值作為基準(zhǔn)值。小于基準(zhǔn)值的順序在左邊(一般無序),大于基準(zhǔn)值的順序在右邊(一般無序)。通常,選擇序列的第一個元素。
一個循環(huán):從后向前比較,與參考值和最后一個值進行比較,如果交換位置小于參考值,則繼續(xù)比較下一個,直到找到小于參考值的第一個值。找到此值后,將其從前到后進行比較。如果存在大于參考值的值,則交換位置。如果沒有,則繼續(xù)比較下一個值,直到找到比參考值大的第一個值。直到從前面到后面的比較索引>;從后面到前面的比較索引結(jié)束第一個循環(huán)。此時,左右兩側(cè)依次為參考值。
然后比較左右順序并重復(fù)上述循環(huán)。