![]()
![]()
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 }