含负数!!!
//含负数!!!
private static void jsSort2(int[] arr) {
//两个辅助空间
int max1 = 0;//正数的空间长度
int max2 = 0;//负数的空间长度
for (int i : arr) {
if(i > max1){
max1 = i;
}
if(i < 0){
if((-1*i) > max2){
max2 = -1*i;
}
}
}
//两个辅助空间 空间复杂度++
int[] help1 = new int[max1+1];
int[] help2 = new int[max2+1];
for (int i : arr) {
if(i>=0){
help1[i] ++;
}else {
//装负数
help2[-1*i]++;
}
}
//放到原数组
int current = 0;
for (int i = help1.length-1; i >= 0 ; i--) {
//先装负数
while (help2[i] > 0) {
//help2数组从后往前装 *-1
arr[current++] = i * -1;
help2[i]--;
}
}
for (int i = 0; i< help1.length; i++) {
//继续装正数或0
while (help1[i]>0){
arr[current++] = i;
//特别注意个数相对应地减少
help1[i]--;
}
}
}