1、輸入的線性表的元素屬於有限偏序集S;
2、設輸入的線性表的長度為n,|S|=k(表示集合S中元素的總數目為k),則k=O(n)。
在這兩個條件下,統計排序的複雜性為O(n)。
統計排序算法的基本思想是對於給定的輸入序列中的每一個元素x,確定該序列中值小於x的元素的個數。一旦有了這個信息,就可以將x直接存放到最終的輸出序列的正確位置上。例如,如果輸入序列中只有17個元素的值小於x的值,則x可以直接存放在輸出序列的第18個位置上。當然,如果有多個元素具有相同的值時,我們不能將這些元素放在輸出序列的同一個位置上,因此,上述方案還要作適當的修改。
假設輸入的線性表L的長度為n,L=L1,L2,..,Ln;線性表的元素屬於有限偏序集S,|S|=k且k=O(n),S={S1,S2,..Sk};則統計排序算法可以描述如下:
掃描整個集合S,對每一個Si∈S,找到線上性表L中小於等於Si的元素的個數T(Si);
掃描整個線性表L,對L中的每一個元素Li,將Li放在輸出線性表的第T(Li)個位置上,並將T(Li)減1。
具體的實現如下:
void Counting_Sort(int a[], int b[], int l, int k)
...{
int* c = new int[k];
memset(c, 0, k * sizeof(int));
for (int j = 0; j < l; j++) c[a[j]]++;
for (int j = 1; j < k; j++) c[j] += c[j - 1];
for (int j = l - 1; j >= 0; j--)
...{
b[c[a[j]] - 1] = a[j];
c[a[j]]--;
}
delete []c;
}
其中a為輸入,b為輸出,l為元素個數,k為元素最大值。
我們看到,統計排序算法沒有用到元素間的比較,它利用元素的實際值來確定它們在輸出數組中的位置。因此,統計排序算法不是一個基於比較的排序算法,從而它的計算時間下界不再是Ω(nlogn)。另一方面,統計排序算法之所以能取得線性計算時間的上界是因為對元素的取值範圍作了一定限制,即k=O(n)。如果k=n2,n3,..,就得不到線性時間的上界。此外,我們還看到,由於算法第4行使用了downto語句,經統計排序,輸出序列中值相同的元素之間的相對次序與他們在輸入序列中的相對次序相同,換句話說,統計排序算法是一個穩定的排序算法。
相關詞條
-
中國旅遊涉外飯店經營統計及排序1999
《中國旅遊涉外飯店經營統計及排序1999》是1999年中國旅遊出版社出版的圖書,作者是中華人民共和國國家旅遊局。
-
桶排序
桶排序 (Bucket sort)或所謂的箱排序,是一個排序算法,工作的原理是將數組分到有限數量的桶子裡。每個桶子再個別排序(有可能再使用別的排序算法或...
定義 算法 代價 源碼 套用 -
排序法
選取一個衡量因素來比較員工的工作效績,可以從優到劣也可從劣到優來排序,每一次排序只能找一項最基本因素,排序法可分為簡單排序法和交替排序法
排序法的定義 排序法的分類 排序法的步驟 排序法的基本步驟 -
作業排序
周期性生產類型的生產組織形式是工藝專業化,車間往往就是生產過程中的某個工藝階段,每個零件在車間內要經過某幾個工序的加工。因此車間的作業計畫中工件加工的排...
-
排序檢驗
排序檢驗法是將一系列樣品按其某種特性或整體印象的順序進行排列。該方法可用於確定不同原料、加工、處理、包裝和儲藏等條件對產品一個或多個感官指標強度水平的影...
方法原理 方法步驟 方法特點 -
統計實用技術
《統計實用技術》是2013年3月人民郵電出版社出版的圖書,作者是胡寶珅。
理論實訓合一 主教材 輔教材 -
量子統計
量子統計前身為雅虎統計,自2007年7月11日Beta版發布以來,一直致力於為個人站長、個人博主、網站管理者、第三方統計等用戶提供網站流量監控、統計、分...
簡單介紹 體系概覽 發展歷程 店鋪統計 網站統計 -
排序報酬法
所謂排序報酬法,即把所有銷售人員的報酬或工資各自固定,統計出當月各位銷售員的銷售額,最後按照第一名、第二名、第三名……的順序發放工資[1。 最高個人工資...
簡介 薪酬計算 評價 -
小學生排序
小學生排序是一個非基於比較的線性時間排序算法。