C排序之Shellsort

原创 2012年03月30日 22:25:02

#include <stdio.h>


/*
 希尔排序的原理:
 希尔排序使用一个序列h(1),h(2),...,h(t)叫做增量序列
 在使用增量h(k)的一趟排序后对于每一个i我们有A[i]<=A[i+h(k)]


 希尔建议的增量序列是:h(t) = [N/2]和h(k) = [h(k+1)/2]
 这里也一次增量为例 


 希尔排序的时间复杂度:
 小于O(N^2)属于亚二次

*/

typedef int ElementType;
 

/************************************************************************/
/*                       shellsort 算法实现                                              */
/************************************************************************/

void Shellsort(ElementType A[],int N)
{
 int i,j;
 ElementType Tmp;
 int Increment;//定义增量
 for (Increment = N/2;Increment >0;Increment/=2) //使用不同的增量序列

  for(i = Increment;i<N;i++){
   Tmp = A[i];
   for (j=i;i>0;j-=Increment)
    if (Tmp<A[j-Increment])
     A[j] = A[j-Increment];
    else
     break;
   
    A[j] = Tmp;
   
  }

}

 

void main()
{
 int a[14]={12,34,56,45,32,67,89,54,54,35,34,54,76,87};

 Shellsort(a,14);

 for (int i=0;i<14;i++)
  printf("%d ",a[i]);
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

shell排序shellsort

  • 2014年06月15日 12:12
  • 344B
  • 下载

数据算法之希尔排序(shellSort)的Java实现

本文的代码来自于《数据结构与算法(JAVA语言版)》,是笔者在网上找到的资料,非正式出刊版物。笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论。   希尔排序的基本思想是先把数组分...
  • claroja
  • claroja
  • 2017年01月17日 15:45
  • 191

0017希尔排序算法(Shellsort)的单文档实现

希尔排序算法的思想:在排序之前,允许数据元素做大的移动,当数据元素接近目的地时,再做较小的移动。这是比较书面的表达,比如对一个数列table[n=8]进行排序,难么必须先确定一个增量(增量的选择决定了...

希尔排序shellsort

基本思想:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接...

希尔排序 ShellSort

import java.math.* ; import java.util.* ; /** * 希尔排序 */ public class Test{ public static void ma...

希尔排序(shellsort)

希尔排序(Shell Sort)是插入排序的一种。又缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是基于...

希尔排序(ShellSort)

//希尔排序 #include #define MAX_SIZE 20 #define N 10 #define T 3 struct RedType // 记录的类型 { int key; i...

希尔排序--ShellSort

希尔排序是插入排序的一种,在进行算法编写的时候会多次调用到插入排序。希尔排序的核心点就是缩小增量级。 那么怎么去缩小增量级呢? 通常都是用数组的长度除二得到第一增量级first(array.len...

希尔排序(Shellsort)

0) 引论 希尔排序时Donald Shell于1959年发明的一种改进插入排序的排序算法。对于插入排序我们知道,要想打破插入排序的时间界,那么必须要交换向距离比较远的元素。希尔排序通过引入增量序列...

算法导论------ShellSort希尔排序

目录 1.Shellsort的思想 2.代码实现 3.增量序列 4.算法分析 5.参考资料   Shellsort是最古老的排序算法之一,该算法以其发明者Donald L. Shell的名字命名(19...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C排序之Shellsort
举报原因:
原因补充:

(最多只允许输入30个字)