對數組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;
}
}
}