选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。 直接插入排序:O(n* ...
分类:
编程语言 时间:
2016-06-22 10:44:50
阅读次数:
218
线性时间排序 各种排序算法总结已经介绍了几种能在O(n*log(n))时间内培训n个数的算法。归并排序和堆排序达到了最坏情况下的上界;快速排序在平均情况下达到该上界。这些算法都有一个有趣的性质:在排序的最终结果中,各元素的次序依赖于它们之间的比较。这类算法为比较算法,还有一类算法是线性时间复杂度的排 ...
分类:
编程语言 时间:
2016-06-21 09:16:48
阅读次数:
183
在我们生活的这个世界中到处都是被排序过的。站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东西都需要排序,可以说排序是无处不在。现在我们举个具体的例子来介绍一下排序算法。 首先出场的我们的主人公小哼,上面这个可爱的娃就是啦。 ...
分类:
编程语言 时间:
2016-06-19 23:01:35
阅读次数:
342
各种排序算法总结已经介绍了几种能在O(n*log(n))时间内培训n个数的算法。归并排序和堆排序达到了最坏情况下的上界;快速排序在平均情况下达到该上界。这些算法都有一个有趣的性质:在排序的最终结果中,各元素的次序依赖于它们之间的比较。这类算法为比较算法,还有一类算法是线性时间复杂度的排序算法,有计数 ...
分类:
编程语言 时间:
2016-06-19 15:33:42
阅读次数:
181
排序算法 2.非比较排序 计数排序、基数排序 排序算法实现 假定序列array[10]={73,22,93,43,55,14,28,65,39,81} (以升序为例) 直接插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 2. 希尔排序 希尔排序(She ...
分类:
编程语言 时间:
2016-06-16 06:46:05
阅读次数:
401
闲着的时候看到一篇“九大排序算法在总结”,瞬间觉得之前数据结构其实都有学过,但当初大多数都只是老师随口带过,并没有仔细研究一下。遂觉:这是欠下的账,现在该还了。 排序按照空间分类: In-place sort不占用额外内存或占用常数的内存 插入排序、选择排序、冒泡排序、堆排序、快速排序。 Out-p ...
分类:
编程语言 时间:
2016-06-15 10:45:45
阅读次数:
300
voidCountSort(int*a,intn)
{
assert(a);
intminValue=a[0];
intmaxValue=a[0];
for(inti=0;i<n;++i)
{
if(minValue>a[i])
{
minValue=a[i];
}
if(maxValue<a[i])
{
maxValue=a[i];
}
}
intrange=maxValue-minValue+1;
int*tmp=newint[r..
分类:
编程语言 时间:
2016-06-12 16:59:51
阅读次数:
273
这里我们开始复习排序的一些面试题。 首先我们来看一下各个排序方法的时间复杂度和稳定性的比较,见下面表格: B是真数(0-9), R是基数(个十百) 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 1.冒泡排序: 算法原理:比较相邻的 ...
分类:
编程语言 时间:
2016-06-10 12:23:04
阅读次数:
226
基数排序(Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。 将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列...
分类:
编程语言 时间:
2016-06-07 14:58:29
阅读次数:
310