题目 插入排序法由未排序的后半部前端取出一个值。插入已排序前半部的适当位置。概念简单但速度不快。 排序要加快的基本原则之中的一个: 是让后一次的排序进行时,尽量利用前一次排序后的结果,以加快排序的速度,Shell排序法即是基于此一概念来改良插入排序法。 解法 Shell排序法最初是D.L Shell ...
分类:
编程语言 时间:
2017-08-10 11:44:00
阅读次数:
133
高级排序比简单排序要快的多,简单排序的时间复杂度是O(N^2),希尔(shell)排序的是O(N*(logN)^2),而快速排序是O(N*logN)。 说明:下面以int数组的从小到大排序为例。 希尔(shell)排序 希尔排序是基于插入排序的,首先回顾一下插入排序,假设插入是从左向右执行的,待插入 ...
分类:
编程语言 时间:
2017-07-09 10:40:40
阅读次数:
143
在第一篇博客中论述了几种排序的方法,这里再论述一下另外一种排序方法:希尔排序 希尔(Shell)排序又称为缩小增量排序,它是一种插入排序。它是直接插入排序算法的一种威力加强版。 希尔排序的基本思想是: 把记录按步长 gap 分组,对每组记录采用直接插入排序方法进行排序。 随着步长逐渐减小,所分成的组 ...
分类:
编程语言 时间:
2017-05-11 20:33:03
阅读次数:
209
#SIZE 10 //直接插入排序 void insert_sort(){ int i,j; int array[SIZE+1]; array[]={0,12,23,11,55,2,34,18,20,48,22}; for(i=2;i<=SIZE;i++){ array[0]=array[i]; j ...
分类:
编程语言 时间:
2017-05-03 13:21:20
阅读次数:
220
#SIZE 10 //直接插入排序 void insert_sort(){ int i,j; int array[SIZE+1]; array[]={0,12,23,11,55,2,34,18,20,48,22}; for(i=2;i<=SIZE;i++){ array[0]=array[i]; j ...
分类:
编程语言 时间:
2017-04-28 22:05:49
阅读次数:
175
/* 冒泡排序 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序 */ # include # define LEN 6 void b... ...
分类:
编程语言 时间:
2017-04-12 21:39:42
阅读次数:
221
/* 说明: 插入排序法由未排序的后半部分前端取出一个值,插入已排序前半部分的适当位置,概念简单但速度不快。 排序要加快的基本原则之一,是让后一次的排序进行时,尽量利用前一次排序后的结果,以加快排序的速度,Shell排序法即是基于此一概念来改良 插入排序法。 解法: 略 */ #include #i... ...
分类:
编程语言 时间:
2017-02-01 18:52:19
阅读次数:
219
今天看《The C Programming Language》的时候看到了shell排序算法, 代码三两行,竟然有3个for循环,眼睛都快瞅瞎了也没有瞅明白,所以就加了一些debug信息,方便分析shell排序的原理。 随机生成一个长度为20的数组,然后进行排序,并将每一次判断的状态打印出来 从记录 ...
分类:
编程语言 时间:
2016-11-04 21:04:02
阅读次数:
339
净化浮躁 一、冒泡排序 二、选择排序 三、插入排序 四、shell排序 2016-9-6 00:00:34-- source:【1】八大排序动图版 【2】动图学排序 【3】python二分查找 ...
分类:
编程语言 时间:
2016-09-06 01:01:01
阅读次数:
167