計數與排序問題

2021-05-25 00:20:11 字數 494 閱讀 8775

2011-04-09 wcdj

問題描述:

將n(1<= n <= 200000)個整數從小到大連續編號,相同的數應具有相同的編號。並按這n個數輸入時的順序輸出它們的編號序列。例如,設輸入資料為 5 3 4 7 3 5 6,則輸出資料為3 1 2 5 1 3 4。

【輸入形式】

從標準輸入讀取資料。

輸入包含n個數字(1<= n <= 200000),之間由空格分隔,以回車符作為結束。

【輸出形式】

計算結果輸出到標準輸出。

按這n個數輸入時的順序輸出它們的編號序列。每個序號之後緊跟乙個空格符,最後輸出回車符。

【輸入樣例】

5 3 4 7 3 5 6

【輸出樣例】

3 1 2 5 1 3 4

方法1:不排序

時間複雜度:o(n^2)

方法2:排序

時間複雜度:o(n*lbn)

方法3:使用stl中的map

計數排序與穩定排序

我們常用的排序演算法,有冒泡演算法 快速演算法等,它們都是基於元素之間的比較來進行排序,有一種特殊的演算法不是基於元素比較,而是利用陣列下標來確定元素在陣列的位置,這種演算法就是 計數排序 先來說一下實現的原理,假設有20個隨機整數的陣列array,他們值分別是 9,3,5,4,9,1,2,7,8,...

分塊思想與計數排序

所謂分塊思想,就是把原本非常大的區間劃分為數個小區間,然後在小區間裡遍歷查詢。這樣比在整個大區間裡查詢要高效許多。以乙個動態求解序列中第k大的數為例子。將10 5分割為 sqrt 10 5 1 個塊,形成乙個陣列 block i 表示這個塊所表示的區間中的元素個數。同時再設定乙個hash陣列 has...

python計數排序 Python 計數排序

1.python coding utf 8 def counting sort a,b,k 計數排序,偽碼如下 counting sort a,b,k 1 for i 0 to k 初始化儲存區的值 2 do c i 0 3 for j 1 to length a 為各值計數 4 do c a j ...