一、思想java
將數組元素做爲數組下標,統計元素出現的個數。而後填充回原數組中。數組
二、時間複雜度code
最好O(n ),最壞O(n ),平均O(n )。class
三、代碼實現統計
public class CountSort { public static void countSort(int[] arr){ if(arr == null || arr.length == 0) return; int n = arr.length; int max = arr[0]; //尋找數組的最大值 for(int i=1;i<n;i++){ if(max < arr[i]){ max = arr[i]; } } int[] temp = new int[max +1]; for(int i=0;i<=max;i++) temp[i] = 0; //進行計數 for(int i=0;i<n;i++){ temp[arr[i]]++; } int cur = 0; //進行數組填充 for(int i=0; i<=max; i++){ for(int j= temp[i];j>0; j--){ arr[cur++] = i; } } } public static void main(String[] args) { int[] arr = {50,10,90,30,70,40,80,60,20}; countSort(arr); for (int array : arr) { System.out.print(array+" "); } System.out.println(); } }