对于一个int数组,请编写一个计数排序算法,对数组元素排序。
给定一个int数组A及数组的大小n,请返回排序后的数组。
测试样例:
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
AC代码:
import java.util.*;
public class CountingSort {
public int[] countingSort(int[] A, int n) {
// write code here
int max = A[0];
int min = A[0];
// 求出最大最小值
for (int i=1; i<n; i++) {
max = Math.max(A[i], max);
min = Math.min(A[i], min);
}
// 创建桶
int[] bucket = new int[max-min+1];
// 计数排序
for (int i=0; i<n; i++) {
bucket[A[i] - min]++;
}
// 按照桶的计数的顺序进行赋值
int index = 0;
for (int i=0; i<(max-min+1); i++) {
while(bucket[i]>0) {
A[index] = i + min;
index ++;
bucket[i]--;
}
}
return A;
}
}