c c 實現計數排序

2021-10-01 08:40:59 字數 841 閱讀 7615

核心在於將輸入的資料值轉化為鍵儲存在額外開闢的陣列空間中。 作為一種線性時間複雜度的排序,計數排序要求輸入的資料必須是有確定範圍的整數。

計數排序(counting sort) 是一種穩定的排序演算法。計數排序使用乙個額外的陣列c,其中第i個元素是待排序陣列a中值等於i的元素的個數。然後根據陣列c來將a中的元素排到正確的位置。它只能對整數進行排序。

演算法步驟:

步驟1:找出待排序的陣列中最大和最小的元素;

步驟2:統計陣列中每個值為i的元素出現的次數,存入陣列c的第i項;

步驟3:對所有的計數累加(從c中的第乙個元素開始,每一項和前一項相加);

步驟4:反向填充目標陣列:將每個元素i放在新陣列的第c(i)項,每放乙個元素就將c(i)減去1。

// 計數排序

public

static

int[

]countingsort

(int

array)

bias =

0- min;

int[

] bucket =

newint

[max - min +1]

; arrays.

fill

(bucket,0)

;for

(int i =

0; i < array.length; i++

)int index =

0, i =0;

while

(index < array.length)

else

i++;}

return array;

}

計數排序簡單實現

嘮叨完乙個 開始寫計數排序這個簡單的線性排序演算法。原理很簡單,繼續wiki 之 當輸入的元素是 n 個 0 到 k 之間的整數時,它的執行時間是 n k 計數排序不是比較排序,排序的速度快於任何比較排序演算法。由於用來計數的陣列c的長度取決於待排序陣列中資料的範圍 等於待排序陣列的最大值與最小值的...

計數排序 C 實現

一 演算法描述 插入排序 選擇排序 氣泡排序 歸併排序 堆排序以及快速排序都是比較排序演算法 各元素之間的次序依賴於他們之間的比較。在最壞情況下,任何比較排序演算法都需要做 nlgn 次比較。因此堆排序和歸併排序都是漸進最優的比較排序演算法。計數排序不是一種比較排序演算法,二是基於運算來確定元素的排...

計數排序 java實現)

計數排序常用於純數字的排序,速度很快,也很實用 小資料採用計數排序,空間換時間 package sort 計數排序 常用於數字排序 用空間換時間策略 public class countintegersort int min findmin arr int max findmax arr int c...