浅谈计数排序
2021-06-28 17:07
标签:const inline 更新 mes cst 利用 std using 数据 所谓计数排序,就是建立在计数上的排序。 计数排序不以比较为基础,所以可以打破比较排序\(O(nlogn)\)的复杂度下界。 我们只要计算出比\(i\)小的数字有多少个,就可以知道\(i\)在数据里的排名。然后根据排名,我们就可以反造一波排好序的数据了。 我们用\(rk[i]\)记录第\(i\)个数据的排名,\(sum[i]\)记录权值1~\(i\)一共有多少个数据。然后\(a[i]\)的排名就是\(sum[i]\),如果有相同的权值那么每次用\(sum[i]\)更新一个数据的\(rk\)后都要把\(sum[i]\)--。 那么根据\(ans[rk[i]]=a[i]\),一个一个把数据往\(ans\)数组里填就是了。 时间复杂度:\(O(n+maxv)\) 空间复杂度:\(O(n+maxv)\) 代码如下: 浅谈计数排序 标签:const inline 更新 mes cst 利用 std using 数据 原文地址:https://www.cnblogs.com/AKMer/p/9649032.html#include