希尔排序基本思想:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入 ...
分类:
编程语言 时间:
2016-06-04 14:51:29
阅读次数:
208
今天,我们来总结一下排序算法:
排序分为冒泡排序,选择排序,插入排序,希尔排序,合并排序,快速排序,堆排序,基数排序等等,本篇文章我来详细解析冒泡排序,选择排序,直接插入排序。冒泡排序首先说说最简单的冒泡排序:从老谭那本书就开始认识冒泡排序了,这种方法简单易懂:
这张动图可以解释冒泡排序。
接下来,看代码的实现:#include
#include
#i...
分类:
编程语言 时间:
2016-06-02 13:47:13
阅读次数:
191
选择排序工作原理:每一次从待排序的数据元素中选出最大或最小的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。voidSelectSort(int*a,size_tsize)
{
assert(a);
for(inti=0;i<size;i++)
{
intmin=i;
for(intj=i+1;j<size;j++)
{
//选择最小元素
if(a[..
分类:
编程语言 时间:
2016-06-01 07:00:34
阅读次数:
154
希尔排序 希尔排序:也叫作缩减增量排序,它通过比较相距一定间隔的元素来工作,各趟比较所用的距离随着算法的进行而缩小,直到只比较相邻元素的最后一趟排序为止。 希尔排序使用一个序列h1,h2,...,ht,叫做增量排序,在使用增量ht的一趟排序之后,对于每一个i我们都有a[i] ≤ a[i + ht], ...
分类:
编程语言 时间:
2016-05-31 13:44:47
阅读次数:
202
一,希尔排序算法介绍 ①希尔排序又称缩小增量排序 ,它本质上是一个插入排序算法。为什么呢? 因为,对于插入排序而言,插入排序是将当前待排序的元素与前面所有的元素比较,而希尔排序是将当前元素与前面增量位置上的元素进行比较,然后,再将该元素插入到合适位置。当一趟希尔排序完成后,处于增量位置上的元素是有序 ...
分类:
编程语言 时间:
2016-05-28 22:59:11
阅读次数:
175
插入排序
1动图展示
2算法描述
3示例代码
选择排序
1动图展示
2算法描述
3示例代码
冒泡排序
1动图展示
2算法描述
3示例代码
快速排序
1动图展示
2算法描述
3示例代码
合并排序
1动图展示
2算法描述
3示例代码
希尔排序
1动图展示
2算法描述
3示例代码
堆排序
1动图展示
2算法描述
3示例代码这里抽象出了一个排序基类:public abstract class BaseSor...
分类:
编程语言 时间:
2016-05-27 11:30:32
阅读次数:
240
希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进 ...
分类:
编程语言 时间:
2016-05-25 13:00:44
阅读次数:
148
插入排序1.直接插入排序voidInsertSort(int*a,size_tsize)//直接插入排序{ assert(a); for(size_ti=0;i<size-1;++i) { intend=i; inttmp=a[end+1]; while(end>=0&&a[end]>tmp) { a[end+1]=a[end]; --end; } a[end+1]=tmp; }}2.希尔排序//希尔排序vo..
分类:
编程语言 时间:
2016-05-24 22:59:23
阅读次数:
351
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。 本文将依次介绍上述八大排序算法。 算法 ...
分类:
编程语言 时间:
2016-05-24 22:33:49
阅读次数:
238
1、定义 希尔排序(Shell Sort)是插入排序的一种。因D.L.Shell于1959年提出而得名。 2、基本思想 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分 ...
分类:
编程语言 时间:
2016-05-24 18:42:04
阅读次数:
210