計數排序屬於線性排序的一種,時間複雜度為θ(n),但不是原址排序,犧牲了一定的空間複雜度
c#實現如下:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace algorithmtest
//開始計數,arr中的值每出現一次,temp對應位置的元素值加1
for (i = 0; i < length; i++)
//從前往後,依次將值加到後面一項,這樣可以保證temp中每個元素中儲存了arr中小於等於當前值的元素個數
for (i = 1; i < k; i++)
//依據temp中的值,將arr中每個元素放到result中去,每放乙個temp中值要減1,這樣為了如果出現相同元素,不會重複寫到同乙個位置
for (i = length-1; i >= 0; i--)}}
}
演算法筆記之 計數排序
適合整數排序,以及數值較小的情況。當輸入的元素是 n 個 0 到 k 之間的整數時,它的執行時間是 n k 計數排序不是比較排序,排序的速度快於任何比較排序演算法。由於用來計數的陣列c的長度取決於待排序陣列中資料的範圍 等於待排序陣列的最大值與最小值的差加上1 這使得計數排序對於資料範圍很大的陣列,...
演算法之計數排序
核心思想 通過計算某個資料之前有多少個資料來確定自身的位置,不通過資料之間的相互比較,所以是非比較排序。原始計數排序 時間複雜度 o n k k為資料量 缺點 如果資料只有兩個,9999,10000,那麼會額外建立容量為10000的陣列,浪費空間。public static int countsor...
演算法之計數排序
原理 用乙個陣列記錄待排序陣列 現的數字。最低位代表最小值,偏移量是記錄陣列中的下標 待排序陣列 2 1 4 可以表示為 記錄陣列 1 1 0 1 陣列長度為 4 1 1 然後根據記錄陣列輸出結果 public static void countsort int arr if arr.length ...