计数排序
1 public class countSort { 2 public static void main(String[] args) { 3 int array[]= {-9,-8,-3,-11,8,6,5,2,7}; 4 System.out.println(Arrays.toString(countSort(array))); 5 } 6 public static int[] countSort(int array[]) { 7 int min=array[0]; 8 int max=array[0]; 9 for (int i = 0; i < array.length; i++) { 10 if (array[i]>max) { 11 max=array[i]; 12 } 13 if (array[i]<min) { 14 min=array[i]; 15 } 16 } 17 //构建计数数组 18 int count[]=new int[max-min+1]; 19 20 //构建处理后的排序数组 21 int handleArray[]=new int[array.length]; 22 for (int i = 0; i < array.length; i++) { 23 handleArray[i]=array[i]-min; 24 } 25 26 //计数到count数组中 27 for (int i = 0; i < handleArray.length; i++) { 28 count[handleArray[i]]++; 29 } 30 31 //构建处理后的count数组 32 for (int i =1; i < count.length; i++) { 33 count[i]+=count[i-1]; 34 } 35 // 36 for (int i=array.length-1;i>=0;i--) { 37 array[count[handleArray[i]]-1]=handleArray[i]+min; 38 count[handleArray[i]]--; 39 } 40 return array; 41 } 42 }