一、适用范围
数据量大且数据范围小的情况,比如有一万条数据,但是每个数据只在0~10之间这种情况
二、思想
记录原数组中每一个数据出现的次数,将次数存入辅助数组,最后将辅助数组中的内容放入原数组(结果数组)。
三、code
public static void coutSort(){
//初始化原数组中数据的范围大小的辅助数组,假设范围为0~10
//{4,3,3,6,2,3,0,9,9,1,5,7};
int temp [] = new int[10];
int result[] = new int[arr.length]; //结果数组,和原数组等长
for(int i = 0;i<arr.length;i++){
temp[arr[i]]++;
}
System.out.println(Arrays.toString(temp));
int t =temp[0];
int m = 0;
for(int k = 0;k<temp.length;k++){
int a = 0;
while (t !=0 && a <temp[k]){
result[m] = k;
m ++;
a++;
t = temp[k];
}
}
System.out.println(Arrays.toString(result));
}
四、测试
一万个长度的数组,记录每个数据出现的次数,最后放入结果数组!