計數排序 計數排序是一種高效的線性排序。 它通過計算一個集合中元素出現的次數來確定集合如何排序。不同於插入排序 快速排序等基於元素比較的排序,計數排序是不需要進行元素比較的,而且它的運行效率要比效率為O nlgn 的比較排序高。 計數排序有一定的局限性,其中最大的局限就是它只能用於整型或那么可以用整型來表示的數據集合。原因是計數排序利用一個數據的索引來記錄元素出現的次數,而這個數組的索引就是元素的 ...
2018-05-07 05:57 0 2165 推薦指數:
(一)說明 這里我是按自己的理解去實現的,時間復雜度和空間復雜度和算法導論上的可能不一樣,感興趣的話參考下就行,感覺最重要的還是算法思想。根據算法性能去實現算法以后再研究。 (二)計數排序 計數排序的基本思想是:對每一個輸人元素x,確定小於x 的元素個數。 利用這一 ...
這是三種線性時間復雜度的排序算法,它們是用運算而不是比較來確定排序順序的 一、基數排序 1.簡介 它一種與其他排序算法完全不同的排序方法,其他的排序算法都是通過關鍵字之間的比較和移動來完成的,而它是采用一種多關鍵字的思想。 多關鍵字的思想:給定一組數據,我可以先按個位的大小對所有數進行排序 ...
1. 桶排序 1.1 范圍為1-M的桶排序 如果有一個數組A,包含N個整數,值從1到M,我們可以得到一種非常快速的排序,桶排序(bucket sort)。留置一個數組S,里面含有M個桶,初始化為0。然后遍歷數組A,讀入Ai時,S[Ai]增一。所有輸入被讀進后,掃描數組S得出排好序的表。該算法 ...
排序是一種穩定的線性時間排序算法。計數排序使用一個額外的數組C,使用 C[i] 來計算 i 出現的次數 ...
計數排序,基數排序,桶排序等非比較排序算法,平均時間復雜度都是O(n)。這些排序因為其待排序元素本身就含有了定位特征,因而不需要比較就可以確定其前后位置,從而可以突破比較排序算法時間復雜度O(nlgn)的理論下限。 計數排序(Counting sort) 計數排序 ...
package sorting; /** * 基數排序 * 平均O(d(n+r)),最好O(d(n+r)),最壞O(d(n+r));空間復雜度O(n+r);穩定;較復雜 * d為位數,r為分配后鏈表的個數 * @author zeng * */ public ...
計數排序的缺點很明顯,需要額外的空間C來作為計數數組,雖然時間復雜度為O(n+k),但當輸入序列里元素取值很大的時侯,如k=O(n2),時,此時時間復雜度已經達到n2數量級了,空間的消耗也是讓人無法承受的。這里介紹一種另一種線性排序算法——基數排序,可以應對數值很大的情況 ...