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

xiaoxiao2021-02-28  77

对数组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; } } }
转载请注明原文地址: https://www.6miu.com/read-44972.html

最新回复(0)