计数排序

 

 

 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 }

 

posted @ 2019-09-18 09:32  修仙小华  阅读(102)  评论(0编辑  收藏  举报