为什么叫快速排序
这个标题是带有歧义的,每一种排序都有自己的名字,有的是发明者+排序(Shell排序),有的是用的步骤名称+排序(插入排序)...
而快速排序是以它的属性+排序为名(这不是废话吗)。那么我再换个意义明确的标题:
快速排序为什么那么快
要弄明白这一点首先需要了解基于比较的排序模型:决策树
对大小为n的输入,其位置关系有n!种可能。排序算法的工作就是在所有...
分类:
编程语言 时间:
2015-01-06 10:14:03
阅读次数:
249
Shell排序算法的时间复杂度分析比较复杂,实际所需的时间取决于各次排序时增量的个数和增量的取值。研究证明,若增量的取值比较合理,Shell排序算法的时间复杂度约为O(n(ldn)2)。由于Shell排序算法是按增量分组进行的排序,所以Shell排序算法是一种不稳定的排序算法。
分类:
编程语言 时间:
2015-01-03 14:37:08
阅读次数:
230
由于考试耽搁了几天,不好意思~~~前面的介绍的三种排序算法,都属于简单排序,大家能够看下详细算法,时间复杂度基本都在0(n^2),这样呢,非常多计算机界、数学界的牛人就非常不爽了,他们在家里想啊想,吃饭的时候在想,窝粑粑的时候也在想,到底能不能把时间复杂度搞低点呢。最终,皇天不负有心人啊,王母娘娘显...
分类:
编程语言 时间:
2014-12-30 20:29:03
阅读次数:
164
概要
希尔(Shell)排序的主要思想是分组分别用插入排序实现排序,然后不断缩小分组时的相邻组内元素的距离达到排序效果,经过几步之后,整个序列基本有序,最后整体利用插入排序即可完成排序。这里为什么选择插入排序呢?因为排序过程中“基本有序”越来越好,所以采用插入排序最好。
主要代码及示例
#include
#include
#include
void She...
分类:
编程语言 时间:
2014-12-20 20:56:49
阅读次数:
173
//希尔(shell)排序void Shell_Sort(int *a,int n){ int gap,i,j,temp; for(gap=n/2;gap>0;gap/=2)/*设置排序的步长,步长gap每次减半,直到减到1*/ { for(i=gap;i=0)&&(a[j]>a[j+gap]);....
分类:
编程语言 时间:
2014-11-15 23:02:09
阅读次数:
203
一、实验目的:比较至少4种排序算法的执行效率。已学过的算法:起泡排序、选择排序、插入排序、shell排序,归并排序、快速排序等。二、实验要求:1、从中选择至少4中排序算法,写成独立的函数进行调用。2、参与排序的数据不少于5000个,要求用数据文件存储随机产生的数据。3、要求在main()函数中调用以...
分类:
编程语言 时间:
2014-11-15 21:46:55
阅读次数:
358
常见经典排序算法
1.希尔排序
2.二分插入法
3.直接插入法
4.带哨兵的直接排序法
5.冒泡排序
6.选择排序
7.快速排序
8.堆排序
一.希尔(Shell)排序法(又称宿小增量排序,是1959年由D.L.Shell提出来的)
/*?S...
分类:
编程语言 时间:
2014-10-22 07:41:06
阅读次数:
298
常见经典排序算法
1.希尔排序
2.二分插入法
3.直接插入法
4.带哨兵的直接排序法
5.冒泡排序
6.选择排序
7.快速排序
8.堆排序
一.希尔(Shell)排序法(又称宿小增量排序,是1959年由D.L.Shell提出来的)
/* Shell 排序法 */
#include
void sort(int v[]...
分类:
编程语言 时间:
2014-10-18 15:34:08
阅读次数:
226
现在来写写数据结构,感觉还是有点陌生,应该多练练,有需要的朋友可以看看。
* 冒泡排序
* 插入排序
* 选择排序
* shell排序
* 堆排序
* 归并排序
* 二叉树排序
* 快速排序...
分类:
编程语言 时间:
2014-09-29 19:23:01
阅读次数:
310
1.选择排序的实现
2.插入排序的实现
3.shell排序的实现
注意代码中h值的选取。
4.shuffling(随机算法)
问题描述:给定一组元素个数为N数组i,随机的重新安排每个元素的位置,要求每个元素出现在各个位置上的概率相等。
解(1):
思路:声明一个长度为N的double类型的数组j,生成N个随机变量依次赋给j中的元...
分类:
其他好文 时间:
2014-09-22 15:38:22
阅读次数:
148