演算法學習筆記之計數排序

2021-06-18 02:40:48 字數 569 閱讀 2805

計數排序屬於線性排序的一種,時間複雜度為θ(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 ...