计数排序思想: 对每一个元素,确定小于其的元素个数,利用这一信息即可将其放入正确的位置。 计数排序时间复杂度:Θ(n) 计数排序示例: 基数排序思想: 对欲排序数组按最低有效位(即数字的最后一位)进行排序,之后,用同样的方法对次低有效位进行排序,重复该过程直至所有位数都已排好序。 基数排序时间复杂度 ...
分类:
编程语言 时间:
2018-10-30 22:50:38
阅读次数:
233
桶排序、计数排序和基数排序这三种算法的时间复杂度都为 $O(n)$,因此,它们也被叫作线性排序(Linear Sort)。之所以能做到线性,是因为这三个算法是 非基于比较 的排序算法,都不涉及元素之间的比较操作。 1. 桶排序(Bucket Sort)? 1.1. 桶排序原理 桶排序 ,顾名思义,要 ...
分类:
编程语言 时间:
2018-10-20 11:51:39
阅读次数:
171
这几天再看排序,有提到排序稳定性的问题。排序分为稳定(冒泡排序、插入排序、归并排序、基数排序)和不稳定(选择排序、快速排序、希尔排序、堆排序)。 看见过一个面试题问过排序算法稳定性的应用,当时不怎么理解,现在整理出来一些思绪。 给出一组数据(比如学生信息),每个数据都有不同的属性(成绩A,成绩B,等 ...
分类:
编程语言 时间:
2018-10-15 23:26:11
阅读次数:
370
一、基数排序介绍 基数排序(Radix Sort)是桶排序的扩展,它的基本思想是:将整数按位数切割成不同的数字,然后按每个位数分别比较。具体做法是:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成 ...
分类:
编程语言 时间:
2018-10-15 12:22:19
阅读次数:
206
今天在头条看一个很有意思的排序算法【基数排序】,以前所学习的排序算法都是基于数值对比的方式排序的,而这个算法挺有意思的非常独特。但从网上看到的例子通常是对个位,十位处理,并转为对应的桶索引的方式实现,这里将此算法用C#实现,并以位运算的新方式实现。 一.代码实现 二.输出排序结果: 三 .基数排序算 ...
分类:
编程语言 时间:
2018-10-15 00:38:01
阅读次数:
230
基数排序——线性排序方法? 标签:知识点总结 阅读体验:https://zybuluo.com/Junlier/note/1307580 吐槽 网上看了几篇就能弄懂了,这个东西其实挺简单的 比起那些什么$FFT,NTT,后缀XXX......$来说还是很简单的,并且还比较有用 具体实现 基数排序,顾 ...
分类:
编程语言 时间:
2018-10-11 23:50:53
阅读次数:
209
排序算法 排序算法两阶段 第一阶段(比较排序) 插入排序 合并排序 堆排序 快速排序 第二阶段(非比较排序) 计数排序 基数排序 桶排序 第一阶段:比较排序 插入排序 插入排序的主要思想 : 将当前的元素放入前面合适的位置 插入排序的实现细节 : 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