時間複雜度爲O(n)的排序

對數組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;
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章