原理後續補齊。數組
public static int[] countSort(int[] array) { // 取得計數排序範圍 int max = array[0]; int min = array[0]; for (int i = 1; i < array.Length; i++) { if (array[i] > max) { max = array[i]; } if (array[i] > min) { min = array[i]; } } int d = max - min; // 將數組填充 int[] countArray = new int[d+1]; for (int i=0; i < array.Length; i++) { // 若是有某個數就加1 countArray[array[i]-min]++; } // 統計數組,每一個是前面數組之和 for (int i=1;i<countArray.Length;i++) { countArray[i] += countArray[i - 1]; } //開始排序 int[] sortedArray = new int[array.Length]; for (int i=array.Length-1;i>=0;i--) { sortedArray[countArray[array[i] - min]-1]=array[i]; countArray[array[i] - min]--; } return sortedArray; }