JAVA语言之计数排序

非比较的计数排序可以用桶排序的方式实现

代码如下:

package com.paixu;


public class jishu {

public static void main(String[] args) {
int[] A=new int[]{1,2,3,5,2,3};
A=jishu.countingSort(A, 6);
for(int i=0;i<A.length;i++){
System.out.print(A[i]+" ");
}


}
public static int[] countingSort(int[] A, int n) {
       int min=A[0];
       int max=A[0];
       //得到数组中的最大值和最小值
       for(int a:A){
      min =Math.min(a, min);
      max =Math.max(a, max);
       }
//然后创建一个刚好的数量的桶
       int tongNum=max-min+1;
       int[] tong =new int[tongNum];
       //然后将A中对应的数放进该桶
       for(int a:A){
      tong[a-min]++;
       }//用遍历的每一个数减去最小的数就能保存
       int count=0;
       //现在将数组桶里面的数据一次倒出
       for(int i=0;i<tongNum;i++){
      //第一个for含义是指一共有多少个这样的桶
      for(int j=0;j<tong[i];j++){
      //第二个for含义是指遍历到的每一个桶里面有多少个同样的数据
      //并且从0开始都小于这个数目tong[i]
      A[count]=i+min;
      //这个表达式i+min表示从最小值+0开始算起
      count++;
      }
       } 
return A;
    }
}


你可能感兴趣的:(JAVA语言之计数排序)