由于考试耽搁了几天,不好意思~~~前面的介绍的三种排序算法,都属于简单排序,大家能够看下详细算法,时间复杂度基本都在0(n^2),这样呢,非常多计算机界、数学界的牛人就非常不爽了,他们在家里想啊想,吃饭的时候在想,窝粑粑的时候也在想,到底能不能把时间复杂度搞低点呢。最终,皇天不负有心人啊,王母娘娘显...
分类:
编程语言 时间:
2014-12-30 20:29:03
阅读次数:
164
说明 写这个主要是为了锻炼自己,并无实际意义。 每个浏览器测试得出的数据会不一样。比如我用chrome 测试 一般快速排序都会最快,IE 则根据数组长度有可能希尔最快。 不要用太大数据去测试冒泡排序(浏览器崩溃了我不管) 如果有兴趣可以在线排序动画下载测试页面个人理解 冒泡排序:最简单,也...
分类:
编程语言 时间:
2014-12-29 13:42:53
阅读次数:
190
如果说希尔排序是简单插入排序的升级,堆排序是简单选择排序的升级,那么快速排序就是冒泡排序的升级了。相对于冒泡排序,快速排序增大了记录比较和移动的距离,将关键字较大的记录移动到后面,较小的移动到前面,从而减少总的比较和移动次数。快速排序的基本思想:通过每一趟排序都将待排序的记录按照选定的关键字分成两部...
分类:
编程语言 时间:
2014-12-22 10:51:47
阅读次数:
173
概要
希尔(Shell)排序的主要思想是分组分别用插入排序实现排序,然后不断缩小分组时的相邻组内元素的距离达到排序效果,经过几步之后,整个序列基本有序,最后整体利用插入排序即可完成排序。这里为什么选择插入排序呢?因为排序过程中“基本有序”越来越好,所以采用插入排序最好。
主要代码及示例
#include
#include
#include
void She...
分类:
编程语言 时间:
2014-12-20 20:56:49
阅读次数:
173
1、希尔排序介绍希尔排序是对直接插入排序算法的一种改进,当记录较少或者记录本身基本有序的时候直接插入排序的优势非常明显,所以希尔排序就是通过人为的创造这两个条件,然后进行插入排序,基本思想是设置一个增量increment,然后将原始记录“看成”increment组数据,并对每组数据进行直接插入排序,...
分类:
编程语言 时间:
2014-12-17 14:23:59
阅读次数:
201
经典排序算法 - 希尔排序Shell sort
希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分,
第一部分,希尔排序介绍
第二部分,如何选取关键字,选取关键字是希尔排序的关键
第一块希尔排序介绍
准备待排数组[6 2 4 1 5 9]
首先需要选取关键字,例如关键是3和1(第一步分成三组,第二步分成一组),那么待排数组分成了以下三个虚拟组:
[6 1]一组
[...
分类:
编程语言 时间:
2014-12-16 13:34:14
阅读次数:
357
经典排序算法 - 梳排序Comb sort
梳排序还是基于冒泡排序,与冒泡不同的是,梳排序比较的是固定距离处的数的比较和交换,类似希尔那样
这个固定距离是待排数组长度除以1.3得到近似值,下次则以上次得到的近似值再除以1.3,直到距离小至3时,以1递减
不太好描述,还是看例子吧
假设待数组[8 4 3 7 6 5 2 1]
待排数组长度为8,而8÷1.3=6,则比较8和2,4和1,并做交...
分类:
编程语言 时间:
2014-12-16 13:33:42
阅读次数:
236
/* Date:2014.12.14
希尔排序思路:基于插入排序的思想。
流程:1).将有 n 个元素的数组分成 n/2 对,第1个数据和第(n/2 + 1)个数据为一对,依次配对;
2).一次循环使每一个序列对排好顺序;
3).再分为 n/4 对进行排序;
4).重复操作,随序列对数的减少最后变为1个,就完成了整个...
分类:
编程语言 时间:
2014-12-14 22:50:57
阅读次数:
261
排序算法目录概述排序算法交换排序快速排序冒泡排序选择排序堆排序直接选择排序插入排序希尔排序直接插入排序排序算法的运用概述排序算法交换排序快速排序冒泡排序选择排序堆排序直接选择排序插入排序希尔排序直接插入排序排序算法的运用
分类:
编程语言 时间:
2014-12-09 11:53:51
阅读次数:
185