排序算法总结—时间复杂度O(n)—基数排序
基数排序
分为最高位优先和最低位优先的算法。
找到最大值max,求出max的位数。在max位数max—length进行循环max-length趟。对于每一位进行排序,对于一个数字要会从低位一位一位取值,合理使用/10,%10。
(对于大于0的数据范围,通常是10位,如果数据中有负数,要取19位。
开辟一个计数数组count,对于出现几次就对应的数字count+1。
count对应的直接就是该数字对应的下标(后序放入数组),当后序放入数组时,我们将同样的数字对应的count值-1,便于存储下一个同样的数字,不会冲突或溢出。
下面有一个前序放入的计数排序代码,count值++操作;
以王道书为主:
- 时间复杂度 O(d(n+r)) d趟分配和收集,一趟分配O(n),一趟收集O(r)
- 空间复杂度(书中是采用了r个队列)O(r)
- 稳定 稳定!老稳了!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)