对数组a进行排序,要求时间复杂度为O(N)
以空间换时间,新建一个数组b,这里假设arr中最大的数字不超过100,b数组全部初始化为0;
例如arr中有数据12,则在b中对应的下标位置+1
void SortN(
int* arr,
int n)
{
const
int N =
100;
int b[N] = {
0 };
for (
int i =
0; i <= n; ++i)
{
int tmp = arr[i];
++b[tmp];
}
int index =
0;
for (
int i =
0; i < N; ++i)
{
for (
int j =
0; j < b[i]; ++j)
{
arr[
index] = i;
++
index;
}
}
}