排序算法包括插入排序、选择排序、冒泡排序、快速排序、归并排序以及基数排序等六种,下面我们将从他们各自的原理、实现、时间与空间复杂度以及稳定性等方面进行分析。1. 插入排序 基本思想:将一个记录插入到已排序好的有序表中,从而得到一个新的记录数增1的有序表。当表中只有一个数时当然是有序的,因此我们从第....
分类:
编程语言 时间:
2015-07-21 01:31:00
阅读次数:
154
内部排序算法总结:排序算法有各自的时间复杂度,并不代表时间复杂度高的算法在任何情况下就比时间复杂度低的算法要低效,相反也一样。排序算法按照其最基本的操作可以分为以下几种类型:插入类排序算法直接插入排序算法折半插入排序算法希尔排序算法选择类排序算法简单选择排序算法堆排序交换类排序算法冒泡排序快速排序1...
分类:
编程语言 时间:
2015-07-20 23:08:18
阅读次数:
147
这篇博客我准备写一些我见过的算法,虽然现在我见过的还很少,但我相信会越来越多,方便日后自己查阅好了 开始了求解最大子序列和的最有效的算法 1 int MaxSubsequenceSum(const int A[], int N) 2 { 3 int ThisSum, MaxSum, j; 4 ...
分类:
编程语言 时间:
2015-07-19 23:26:00
阅读次数:
221
写代码前,将这些算法分步骤建立模型,代码就好写了1、冒泡排序冒泡排序是非常容易理解和实现,以从小到大排序举例:设数组长度为N。比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。N=N-...
分类:
编程语言 时间:
2015-07-19 23:16:10
阅读次数:
146
#include#include#include#include//greater 使得从小到大 ,less反//priority_queue, less > que 相当于 priority_queue que#includeusing namespace std;const int MAX =....
分类:
编程语言 时间:
2015-07-19 16:25:39
阅读次数:
263
hash算法的意义在于提供了一种快速存取数据的方法,它用一种算法建立键值与真实值之间的对应关系,(每一个真实值只能有一个键值,但是一个键值可以对应多个真实值),这样可以快速在数组等条件中里面存取数据. 在网上看了不少HASH资料,所以对HASH的相关资料进行总结和收集。 //HashTable...
分类:
编程语言 时间:
2015-07-19 13:22:05
阅读次数:
208
1.插入排序插入排序时最容易理解的排序方法,个人总结有三个关键点:1. 需要将处理的元素暂时存储起来2. j变量的范围控制3. 插入值与j变量控制范围中元素大小的比较相关代码: 1 //插入排序 2 template void sort(T* array, int n) 3 { 4 for ...
分类:
编程语言 时间:
2015-07-18 19:54:06
阅读次数:
124
先说一下比较排序的定义吧:比较排序的定义就是除了赋值操作外, 只存在小于‘’这两种运算符是仅有的允许对输入数据进行的操作。插入排序的性质插入排序是一种比较排序将一个数组分为两部分,前面为排好序的部分,后面为未排序的部分将未排序部分的元素逐个插入到已排好序部分的正确位置上就像扑克牌按顺序排列,原先 2...
分类:
编程语言 时间:
2015-07-15 18:47:08
阅读次数:
188
基数排序(Radix sort)是一种非比较型的整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。基数排序也分为LSD(Least significant digital)和MSD(Most significant digital)两种方式,LSD的排序方式由键值的最右边开...
分类:
编程语言 时间:
2015-07-15 18:30:39
阅读次数:
212
KMP里里外外学了很多遍,然后从一位大牛那里学到了比较易懂的理解方法。博客链接:http://www.matrix67.com/blog/archives/115唉~KMP算法Next数组强大无比。Next数组: 1 //next数组的求法 2 void getNext(int len) 3 { 4...
分类:
编程语言 时间:
2015-07-15 16:30:22
阅读次数:
177