说起来学了很久的后缀数组了 思想还是很容易明白的 最大的问题就是 代码看不懂 然后在不断模拟研究的过程中 终于弄清楚了一点 就决定写下来了 不然又会忘的QAQ 以下是代码 ps:首先要弄懂基数排序 定义:c[ ]数组 : 基数排序的桶 x[ ]数组:类似于rank数组,保存当前排序到的以每个位置开始 ...
分类:
编程语言 时间:
2018-02-12 20:09:11
阅读次数:
164
各种排序算法的稳定性和时间复杂度小结 各种排序算法的稳定性和时间复杂度小结 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 冒泡排序是稳定的,算法时间复杂度是O(n ^2)。 2.2 选择排序(Selection Sort) 选择排 ...
分类:
编程语言 时间:
2018-02-07 14:42:21
阅读次数:
136
任何比较排序在最好情况下都要经过Ω(nlgn),即比较排序的下界为Ω(nlgn)。 合并排序和堆排序都是渐进最优的。 要突破Ω(nlgn),就要进行非比较排序。计数排序、基数排序和桶排序都有非比较的一些操作来确定排序顺序,它们可以达到线性运行时间。 这三种排序都是以空间换时间。应用的不广,先不细看了 ...
分类:
编程语言 时间:
2018-02-06 01:26:19
阅读次数:
167
本文对常见的排序算法进行了总结。 常见排序算法如下: 1. "直接插入排序" 2. "希尔排序" 3. "简单选择排序" 4. "堆排序" 5. "冒泡排序" 6. "快速排序" 7. "归并排序" 8. "基数排序" <! more 它们都属于内部排序,也就是只考虑数据量较小仅需要使用内存的排序算 ...
分类:
编程语言 时间:
2018-02-05 21:50:42
阅读次数:
246
一、原理 桶排序的工作原理是吧区间划分为n个大小相同的子区间,这样的区间称为桶。然后将n个输入的数分步到各个桶中去。每个桶再个别的排序,然后按照次序吧各个桶 中的元素列出来即可。 二、时间复杂度 桶排序是一种鸽巢排序的一种归纳结果。当要被排序阵列内的数值是均匀分配的时候,桶排序使用线性时间(O(n) ...
分类:
编程语言 时间:
2018-02-05 20:00:35
阅读次数:
165
一、简介 1954年提出,是一个不需要比较的,类似于桶排序的线性时间排序算法。该算法是对于已知数量范围的数组进行排序。时间复杂度为O (n),适用于小范围集合的排 序。计数排序是用来排序0到100之间的数 字的最好的算法。 二、基本思想 对于给定的输入序列中的每一个元素x,确定该序列中值小于x的元素 ...
分类:
编程语言 时间:
2018-02-04 15:37:52
阅读次数:
363
基本算法如下: 1.插入排序 直接插入排序 折半插入排序 shell排序 2.交换排序 冒泡排序 快速排序 3.选择排序 简单选择排序 树形选择排序 堆排序 4.归并排序 二路归并排序 多路归并排序 5.基数排序 基数排序 ...
分类:
编程语言 时间:
2018-02-03 18:54:35
阅读次数:
171
之前的博文写了交换(冒泡)排序、选择排序,本文就写写桶排序。不过我理解的这样不算是真正上的桶排序,我的比较简单而真正的桶排序是比较复杂的,暂且就叫桶排序吧。 桶排序在排序中应该用的不多吧,个人理解的是比较简单易懂的,针对小量数据的排序很有用,不过有个小缺点就是只适合在屏幕上打印输出,实际的应用中我们 ...
分类:
编程语言 时间:
2018-02-02 23:21:52
阅读次数:
263
1.冒泡排序 2.选择排序 3.插入排序 4.快速排序 5.堆排序 6.并归排序 7.希尔排序 8.内置堆模块排序 9.计数排序 ...
分类:
编程语言 时间:
2018-02-02 22:03:23
阅读次数:
207
查找无序数组的中位数,要想时间复杂度为O(n)其实用计数排序就能很方便地实现,在此讨论使用快速排序进行定位的方法。 1、中位数定义 2、算法思想 3、Java代码实现 4、时间复杂度分析 5、附录 中位数一般两种定义: 第一种: 排序后数组的中间位置的值,如果数组的个数是偶数个,则返回排序后数组的第 ...
分类:
编程语言 时间:
2018-01-26 20:59:15
阅读次数:
241