題目描述:
給你n個整數,請按從大到小的順序輸出其中前m大的數。
輸入:每組測試資料有兩行,第一行有兩個數n,m(0213 92 3
演算法實現:
/* n個數字中前m個大的數 */
//要特別注意時間複雜度的問題
#define offset 500000
int hash[1000001];//必須全域性
#includeint main()
for(i=0;i=-500000;i--)
}} }
return 0;
}
特別注意:
對於範圍確定的變數 可用雜湊方法,類似題目還有,1018統計相同成績的學生個數(此處成績確定為0~100內的整數 故可用雜湊方法),1156誰是你潛在的朋友(這道題缺位複雜,有讀者和書名兩個變數考慮),1088剩下的樹(這道題要考慮執行時間盡量少,另外也是線段樹的應用要特別注意)
雜湊排序法
排序法總體上可以分兩大類,一類是基於 比較 的,主要有大家非常熟悉的 選擇排序,交換排序,插入排序,歸併排序等,其演算法的複雜度也是用 比較 的次數衡量的,其中有非常高效和優秀的 快速排序 可以說是他們中間的佼佼者,無論從時間還是空間上說都有很好的效能 另外一類也就自然是不基於 比較 的,資料結構 ...
雜湊,桶排序
理想的雜湊結構不過是乙個包含關鍵字的具有固定大小的陣列,雜湊表的長度是資料結構的一部分。雜湊中的關鍵字不需要支援比較大小,只要能夠支援判等操作就行了。每個關鍵字按照乙個雜湊函式被對映到0到tablesize 1範圍內的桶單元。當不同的關鍵字被對映到相同的單元時,稱作衝突 conflict 雜湊的插入...
雜湊排序演算法
雜湊排序 遇到這樣一道題,資料很大,如果將數字排序後再輸出,得到的結果是tle 超時 時間複雜度o n 2 o n 2 o n2 我們選擇用雜湊排序的方法,降低時間複雜度到o n o n o n 同時也犧牲了空間 用空間換取時間 將數的大小對映到陣列下標,下標越大,這個數越大,處理陣列的資料實現。具...