从《基于比较的排序结构总结》中我们知道:全依赖“比较”操作的排序算法时间复杂度的一个下界O(N*logN)。但确实存在更快的算法。这些算法并不是不用“比较”操作,也不是想办法将比较操作的次数减少到 logN。而是利用对待排数据的某些限定性假设,来避免绝大多数的“比较”操作。桶排序就是这样的原理。桶排...
分类:
编程语言 时间:
2015-07-22 12:40:28
阅读次数:
172
排序算法包括插入排序、选择排序、冒泡排序、快速排序、归并排序以及基数排序等六种,下面我们将从他们各自的原理、实现、时间与空间复杂度以及稳定性等方面进行分析。1. 插入排序 基本思想:将一个记录插入到已排序好的有序表中,从而得到一个新的记录数增1的有序表。当表中只有一个数时当然是有序的,因此我们从第....
分类:
编程语言 时间:
2015-07-21 01:31:00
阅读次数:
154
编程论到极致,核心非代码,即思想。 所以,真正的编程高手同时是思想独到及富有智慧(注意与聪明区别)的人。 每一个算法都是一种智慧的凝聚或萃取,值得我们学习从而提高自己,开拓思路,更重要的是转换思维角度。 其实,我们大多数人都活在“默认状态”下。没有发觉自己的独特可设置选项-----思想。 言归正传(...
分类:
编程语言 时间:
2015-07-20 22:50:32
阅读次数:
149
基数排序
计数排序
桶排序基数排序,桶排序,计数排序是三种线性排序方法,突破了比较排序的O(nlogn)的限制。但是只适用于特定的情况。基数排序以下为维基百科的描述:
基数排序 :
将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。
基数排序的方式可以采用L...
分类:
编程语言 时间:
2015-07-20 13:01:28
阅读次数:
164
概述首先从多排序码排序开始介绍基数排序。以扑克牌排序为例。每张扑克牌有两个“排序码”:花色和面值。其有序关系为:
花色:?<?<?<?? < ? < ? < ?
面值:2<3<4<5<6<7<8<9<10<J<Q<K<A2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 < J < Q < K < A
如果把所有扑克牌排成以下次序:
?2,…,?A,?2,…,?A,?2,…,?A...
分类:
编程语言 时间:
2015-07-19 10:21:34
阅读次数:
161
排序可分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,称为内排序;如果排序过程中需要使用外存,则成为外排序。
内排序有以下几类:
插入类排序:直接插入排序、二分法(折半)插入排序、希尔(缩小增量)排序
选择类排序:简单选择排序、堆排序
交换类排序:冒泡排序、快速排序、三路划分的快速排序
归并类排序:二路归并排序
基数类排序:MSD基数排序、LSD基数排序
各种内部排序算法的比较直接插入...
分类:
编程语言 时间:
2015-07-18 11:09:15
阅读次数:
165
计数排序的基本思想是:统计一个数序列中小于某个元素a的个数为n,则直接把该元素a放到第n+1个位置上。当然当过有几个元素相同时要做适当的调整,因为不能把所有的元素放到同一个位置上。计数排序假设输入的元素都是0到k之间的整数。// 8-2.计数排序.cpp : 定义控制台应用程序的入口点。 // #i...
分类:
编程语言 时间:
2015-07-17 00:05:27
阅读次数:
182
计数排序 前提:待排序表中的所有待排序关键字必须互不相同; 思想:计数排序算法针对表中的每个记录,扫描待排序的表一趟,统计表中有多少个记录的关键码比该记录的关键码小,假设针对某一个记录,统计出的计数值为c,则该记录在新的有序表中的存放位置即为c。 性能:空间复杂度:o(n);时间复杂度:o(n...
分类:
编程语言 时间:
2015-07-16 13:23:30
阅读次数:
161
E. A Simple TaskProblem's Link: http://codeforces.com/problemset/problem/558/EMean:给定一个字符串,有q次操作,每次操作将(l,r)内的字符升序或降序排列,输出q次操作后的字符串。analyse:基本思想是计数排序。所...
分类:
编程语言 时间:
2015-07-16 00:32:51
阅读次数:
327
基数排序(Radix sort)是一种非比较型的整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。基数排序也分为LSD(Least significant digital)和MSD(Most significant digital)两种方式,LSD的排序方式由键值的最右边开...
分类:
编程语言 时间:
2015-07-15 18:30:39
阅读次数:
212