利用陣列下標來確定元素元素的正確位置,適用於一定範圍內的整數排序。
如果原始數列的規模是n,最大和最小整數的差值是m,則計數排序的時間複雜度是o(n+m),空間複雜度是o(m)。
public
class
countsort
if(array[i]
}int d = max - min;
//2.建立統計陣列並統計對應元素的個數
int[
] countarray =
newint
[d+1];
for(
int i =
0; i < array.length; i++
)//3.統計陣列做變形,後面的元素等於前面的元素之和
for(
int i =
1; i < countarray.length;i++
)//4.倒序遍歷原始數列,從統計陣列找到正確位置,輸出到結果陣列
int[
] sortedarray =
newint
[array.length]
;for
(int i = array.length-
1;i>=
0;i--
)return sortedarray;
}public
static
void
main
(string[
] args)
;int
sortedarray =
countsort
(array)
; system.out.
println
(arrays.
tostring
(sortedarray));
}}
侷限性:
1.當數列最大和最小值差距過大時,並不適合用計數排序。
2.當數列元素不是整數時,也不適合用計數排序。
演算法 排序 計數排序
計數排序不是基於比較的排序演算法,其核心在於將輸入的資料值轉化為鍵儲存在額外開闢的陣列空間中。作為一種線性時間複雜度的排序,計數排序要求輸入的資料必須是有確定範圍的整數。計數排序 counting sort 是一種穩定的排序演算法。計數排序使用乙個額外的陣列c,其中第i個元素是待排序陣列a中值等於i...
演算法 排序 計數排序
計數排序的核心思想就是將需要排序的陣列的元素轉為下標,在輔助空間陣列 輔助空間陣列的初始都是0 中找到對應元素的下標位置,將該位置的元素 掃瞄下標,將對應不為0的下標記錄賦值給原陣列,然後對應下標元素 圖例分析 具體 includevoid countsort int a,int len int m...
計數排序演算法
countsort.c include include include typedef int datatype typedef char numtype 有效個數 2至127 2 sizeof numtype 8 1 1 define limit numtype 1 sizeof numtype ...