|
|
@ -12,7 +12,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
观察发现,计数排序名副其实,是通过“统计元素数量”来实现排序的。
|
|
|
|
观察发现,计数排序名副其实,是通过“统计元素数量”来实现排序的。
|
|
|
|
|
|
|
|
|
|
|
|
![counting_sort_overview](counting_sort.assets/counting_sort_overview.png)
|
|
|
|
![计数排序流程](counting_sort.assets/counting_sort_overview.png)
|
|
|
|
|
|
|
|
|
|
|
|
=== "Java"
|
|
|
|
=== "Java"
|
|
|
|
|
|
|
|
|
|
|
@ -195,7 +195,7 @@ $$
|
|
|
|
|
|
|
|
|
|
|
|
## 局限性
|
|
|
|
## 局限性
|
|
|
|
|
|
|
|
|
|
|
|
看到这里,你也许会觉得计数排序太妙了,咔咔一通操作,时间复杂度就下来了。但实际上与其它算法一样,计数排序也无法摆脱“此消彼长”的宿命,**时间复杂度优化的代价是通用型变差**。
|
|
|
|
看到这里,你也许会觉得计数排序太妙了,咔咔一通操作,时间复杂度就下来了。然而,使用技术排序的前置条件比较苛刻。
|
|
|
|
|
|
|
|
|
|
|
|
**计数排序只适用于非负整数**。若想要用在其他类型数据上,则要求该数据必须可以被转化为非负整数,并且不能改变各个元素之间的相对大小关系。例如,对于包含负数的整数数组,可以先给所有数字加上一个常数,将全部数字转化为正数,排序完成后再转换回去即可。
|
|
|
|
**计数排序只适用于非负整数**。若想要用在其他类型数据上,则要求该数据必须可以被转化为非负整数,并且不能改变各个元素之间的相对大小关系。例如,对于包含负数的整数数组,可以先给所有数字加上一个常数,将全部数字转化为正数,排序完成后再转换回去即可。
|
|
|
|
|
|
|
|
|
|
|
|