1. 程式人生 > 實用技巧 >桶排序思想下的排序演算法——計數排序

桶排序思想下的排序演算法——計數排序

桶排序的思想就是把資料放入到多個桶裡面,在對桶裡面的資料進行排序。

之前學過的排序(冒泡、選擇、快排、堆排、歸併)都是基於比較之間的排序,而桶排序不是基於比較的排序。

比如計數排序,顧名思義就是統計一個數字出現的次數,用一個桶來記錄每一個數字出現的次數,最後再將桶由指定的順序將數字取出。

計數排序時間複雜度:O(N)。

計數排序的使用條件:資料狀況處於一個有限的範圍內,這個範圍要儘量的小。

public static void countSort(int[] arr){
        if (arr==null || arr.length <2){
            return
; } //找陣列中的最大值,用來為輔助陣列設定空間 int max = Integer.MIN_VALUE; for (int i = 0;i<arr.length;i++){ max = Math.max(max,arr[i]); } int[] bucket = new int[max + 1]; for (int i = 0;i<arr.length;i++){ bucket[arr[i]]++; }
int i = 0; for (int j = 0;j<bucket.length;j++){ while (bucket[j]-- > 0){ arr[i++] = j; } } }