时间复杂度为O(n)的排序

来源:互联网 发布:淘宝审核原图的标准 编辑:程序博客网 时间:2024/04/28 07:58

对数组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;        }    }}