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
首先学习基数排序。 这一块是对y数组操作,先将n k到n 1放进去,再将[0,n)中sa[i] k =0的sa[i] k放进去。 这是处理新的x数组。y是充当原来的x。其他细节与代码相同。 ...
分类:
其他好文 时间:
2018-10-01 16:08:20
阅读次数:
234
后缀数组理解起来挺难的...... 首先得学一下基数排序。 比如说下面这组数据:11,12,23,15,34,24 基数排序的第一关键字:十位数,第二关键字:个位数。 我们先对第一关键字也就是十位数开个桶hs[]计数: 记完之后应该是这个样子:hs[1]=3,hs[2]=2,hs[3]=1 这些数代 ...
分类:
编程语言 时间:
2018-09-25 20:39:51
阅读次数:
195
def radix_sort(array): bucket, digit = [[]], 0 while len(bucket[0]) != len(array): bucket = [[], [], [], [], [], [], [], [], [], []] for i in range(le... ...
分类:
编程语言 时间:
2018-09-22 10:34:39
阅读次数:
155
复习基数排序和归并排序: 1、 基数排序原理 基数排序(radix sort)是一种只适用于数字或字母类型的排序方法,它检查数字或字母的每一位,将之分类,按照位数的特定顺序,来将元素排列,比如身份证排序,邮编排序,字符串排序。以数字为例,将所有元素按照个位数字分类,分类好后,将个位数字大小排列组合起 ...
分类:
编程语言 时间:
2018-09-21 00:34:40
阅读次数:
194
01.计数排序、桶排序与基数排序 并不是所有的排序 都是基于比较的,计数排序和基数排序就不是。基于比较排序的排序方法,其复杂度无法突破$n\log{n}$ 的下限,但是 计数排序 桶排序 和基数排序是分布排序,他们是可以突破这个下限达到O(n)的的复杂度的 。 1. 计数排序 概念 计数排序是一种稳 ...
分类:
编程语言 时间:
2018-09-16 15:49:47
阅读次数:
184