排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。本文将依次介绍上述八大排序算法。算法一:插...
分类:
编程语言 时间:
2015-05-27 13:48:28
阅读次数:
174
排序算法分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因为数据量太大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。这里只讨论内部排序,常见的内部排序算法有:插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序、及基数排序。1、插入排序插入排序是...
分类:
编程语言 时间:
2015-05-27 13:41:34
阅读次数:
312
通过对直接插入排序的分析,可知其时间复杂度为O(n2),但是,如果待排序序列为正序时,其时间复杂度可提高至O(n)。希尔排序正是对此进行改进的排序。希尔排序的核心理念与插入排序不同,它会首先比较距离较远的元素,而非相邻元素。通过定义一个间隔序列来表示在排序过程中进行比较的元素之间有多远的间隔。
下图演示了希尔排序中间隔序列是如何运行的:
下面我们通过js来实现希...
分类:
编程语言 时间:
2015-05-27 10:15:26
阅读次数:
205
作为电子专业的学生,我所用的C语言教材上关于冒泡排序就算是重点和难点了,看了这题就知道那就是小菜一碟,冒泡排序测试点4、6、8超时,插入排序测试点6超时,最后用了希尔排序,还是在使用最原始的增量序列的条件下,测试点全过了 1 #include 2 //#include 3 4 //void B...
分类:
编程语言 时间:
2015-05-26 13:59:14
阅读次数:
262
这一系列博客的特点就是——给出每趟排序的结果
本来想着好好写一下过程,弄个图片什么的,不过觉得网上的解析太多了,都比较好,所以这些博客就算是对自己的总结吧。
#include
void ShellSort(int *m, int n)
{
int i,flag,gap;
for(gap=n;gap!=1;)
{
gap/=2;
do
{
...
分类:
编程语言 时间:
2015-05-26 12:42:12
阅读次数:
146
转载请注明出处:http://blog.csdn.net/ns_code/article/details/20043459前言 本来想将所有的内部排序总结为一篇博文,但是随着研究的深入,还是放弃了这个念头,斟前酌后,还是觉得分开来写比较好,具体原因,看完本篇博文也就自然明了了。 本篇文章主要探讨.....
分类:
编程语言 时间:
2015-05-13 18:37:31
阅读次数:
161
分类: 白话经典算法系列 2011-08-08 11:41 47406人阅读 评论(46) 收藏 举报 算法shell优化c希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量....
分类:
编程语言 时间:
2015-05-12 22:43:38
阅读次数:
138
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位基本思想:希尔排序把...
分类:
编程语言 时间:
2015-05-12 18:31:10
阅读次数:
126
希尔排序法(缩小增量法) 属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序的方法。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率...
分类:
编程语言 时间:
2015-05-11 19:35:08
阅读次数:
154
目录简介交换排序冒泡排序快速排序插入排序直接插入排序希尔排序选择排序简单选择排序堆排序归并排序基数排序总结简介排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记 录序列。分内部排序和外部排序。若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若...
分类:
编程语言 时间:
2015-05-09 21:45:48
阅读次数:
245