#include<iostream>usingnamespacestd;
voidlinesort(int arr[], int len, int orderArr[]){
int max = 0;
int min = 0;
max = arr[0];
min = arr[0];
for (int i = 0; i < len; ++i) {
if (arr[i] < min) {
min = arr[i];
}
elseif (arr[i] > max) {
max = arr[i];
}
}
int count[1000] = {};
for (int i = 0; i < 1000; i++)
{
count[i] = 0;
}
int countlen = max - min + 1;
for (int i = 0; i < countlen; ++i) {
count[i] = 0;
}
for (int i = 0; i < len; ++i) {
++count[arr[i] - min];
}
for (int i = 1; i < countlen; ++i) {
count[i] = count[i] + count[i - 1];
}
for (int i = len - 1; i >= 0; --i) {
int valueIndex = arr[i] - min;
--count[valueIndex];
orderArr[count[valueIndex]] = arr[i];
}
}
voidPrintfArray(intarray[], int len){
for (int i = 0; i < len; ++i) {
cout << array[i] << " ";
}
cout << endl;
}
intmain(){
int arr1[] = { 2,5,3,0,2,3,0,3 };
int newarray1[1000] = {};
int len1 = sizeof(arr1) / sizeof(int);
linesort(arr1, len1, newarray1);
PrintfArray(newarray1, len1);
int arr2[] = { 4,5,4,2,4, 1,5 };
int newarray2[1000] = {};
int len2 = sizeof(arr2) / sizeof(int);
linesort(arr2, len2, newarray2);
PrintfArray(newarray2, len2);
return0;
}