int[] nums = {5,6,2,1,9,3,4,10};
int n = nums.length;
int min = nums[0];
int max = nums[0];
for (int i = 1; i < n; i++){
if (max < nums[i]){
max = nums[i];
}
if (nums[i] < min){
min = nums[i];
}
}
int len = max - min + 1;
int[] temp = new int[len];
for (int i = 0; i < n; i++) {
temp[nums[i] - min]++;
}
int k = 0;
for (int i = 0; i < len; i++) {
for (int j = temp[i]; j > 0; j--){
nums[k] = i + min;
k++;
}
}