桶排序思想下的排序演算法——計數排序
阿新 • • 發佈:2020-07-16
桶排序的思想就是把資料放入到多個桶裡面,在對桶裡面的資料進行排序。
之前學過的排序(冒泡、選擇、快排、堆排、歸併)都是基於比較之間的排序,而桶排序不是基於比較的排序。
比如計數排序,顧名思義就是統計一個數字出現的次數,用一個桶來記錄每一個數字出現的次數,最後再將桶由指定的順序將數字取出。
計數排序時間複雜度: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; } } }