您的位置:首页 > 编程语言 > Java开发

JAVA语言之计数排序

2016-05-01 21:43 387 查看
非比较的计数排序可以用桶排序的方式实现

代码如下:

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: