計數排序演算法

2021-09-12 07:15:26 字數 811 閱讀 6958

計數排序利用空間換取時間,實現了時間複雜度為o(n+k)(k表示待排序列的最大值)的高效排序,在一定範圍數值的排序中,比快速排序、堆排序更快。

1.只適用於對整數排序。因為計數排序需要通過下標確定整數在新陣列中的下標,如果不為整數,那麼下標也就無法確定;

2.待排序列在一定的取值範圍內。

利用已有陣列構造額外的兩個陣列。

第乙個陣列:大小為原陣列最大值k+1,陣列下標為0到k,值對應下標在原陣列**現的次數。構建完後,執行arr[i] = arr[i-1]+1;

得到最終的第乙個陣列;

第二個陣列:即排序後的陣列。

排序方法:通過倒敘遍歷原陣列和正序遍歷第乙個陣列,找到原陣列的元素和第乙個陣列下標相同的元素,即為該元素在第二個陣列中的下標,值為該元素。

package com.example.demo.sort;

/** * @description:

* @author: zhaowang

* @date: 2019/3/9 14:20

* @version: 1.0

*/public class countsort ;

int max = 0;

for (int i = 0; i max) max = arr[i];

}int arrb = sort(arr,max );

for (int i :arrb)

}public static int sort(int arr,int k) }}

return arrb;

}}

演算法 排序 計數排序

計數排序不是基於比較的排序演算法,其核心在於將輸入的資料值轉化為鍵儲存在額外開闢的陣列空間中。作為一種線性時間複雜度的排序,計數排序要求輸入的資料必須是有確定範圍的整數。計數排序 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 ...