1. 何为计数排序? 计数排序是一种基于数组下标,统计数组值的排序方法。 计数排序适用于要排序的数组取值范围较小的情况。合适的情况下,计数排序的时间复杂度小于n*log(n) 2. 计数排序的第一步:确定取值范围,避免空间浪费。 获取最大最小值的方法: 3. 创建临时对象,存放遍历结果 4. 最后一 ...
分类:
编程语言 时间:
2018-10-09 00:29:56
阅读次数:
237
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意:不能使用代码库中的排序函数来解决这道题。 示例: 进阶: 一个直观的解决方案是使用计数排序的两 ...
分类:
其他好文 时间:
2018-10-07 20:21:48
阅读次数:
123
排序算法 排序算法两阶段 第一阶段(比较排序) 插入排序 合并排序 堆排序 快速排序 第二阶段(非比较排序) 计数排序 基数排序 桶排序 第一阶段:比较排序 插入排序 插入排序的主要思想 : 将当前的元素放入前面合适的位置 插入排序的实现细节 : heap_sort小结: heap_sort中最重要 ...
分类:
编程语言 时间:
2018-10-06 20:40:56
阅读次数:
188
01.计数排序、桶排序与基数排序 并不是所有的排序 都是基于比较的,计数排序和基数排序就不是。基于比较排序的排序方法,其复杂度无法突破$n\log{n}$ 的下限,但是 计数排序 桶排序 和基数排序是分布排序,他们是可以突破这个下限达到O(n)的的复杂度的 。 1. 计数排序 概念 计数排序是一种稳 ...
分类:
编程语言 时间:
2018-09-16 15:49:47
阅读次数:
184
所谓计数排序,就是建立在计数上的排序。 计数排序不以比较为基础,所以可以打破比较排序$O(nlogn)$的复杂度下界。 我们只要计算出比$i$小的数字有多少个,就可以知道$i$在数据里的排名。然后根据排名,我们就可以反造一波排好序的数据了。 我们用$rk[i]$记录第$i$个数据的排名,$sum[i ...
分类:
编程语言 时间:
2018-09-14 23:05:44
阅读次数:
171
计数排序 计数排序假设 个输入元素都是 到`k k`为某整数) 当 为`O(n) O(n)` 计数排序基本思想是:对于每个输入元素 , 确定小于 的元素个数 先新建一个可变数组c, 初始化为0 c记录a中每个元素出现的个数 然后计算对于 从`0..k i` 最后把元素a[i]放入数组b的正确位置上 ...
分类:
编程语言 时间:
2018-09-14 11:07:58
阅读次数:
168
给定两个整数数组,对第一个数组进行排序,整数顺序由其在第二个数组中的位置决定。对于没有出现在第二个整数数组中的整数,应排在末尾,其之间的顺序无限制。这里整数的取值范围是[0, 2 ^ 32 - 1]例: 第一个整数数组为 5 1 6 2 1 2 3, 第二个整数数组为2 1 3, 则排序结果为2 2 ...
分类:
编程语言 时间:
2018-08-20 21:48:07
阅读次数:
139
结论:由于计数排序不是基于比较的排序,所以时间复杂度可以突破O(nlgn);计数排序时间复杂度为O(n),额外空间复杂度为O(n); Java实现代码如下: ...
分类:
编程语言 时间:
2018-08-06 00:46:19
阅读次数:
181
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意:不能使用代码库中的排序函数来解决这道题。 示例: 进阶: 一个直观的解决方案是使用计数排序的两 ...
分类:
其他好文 时间:
2018-07-29 20:30:15
阅读次数:
219