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语言版)》,是笔者在网上找到的资料,非正式出刊版物。笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论。   希尔排序的基本思想是先把数组分...

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

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

希尔排序(shellsort)

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

希尔排序 ShellSort

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

希尔排序(ShellSort)

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

希尔排序--ShellSort

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

ShellSort 希尔排序

希尔排序算法: 思路: 例如例子中的,首先步长increment为10/3=3,再之后为3/3=1,在每次步长循环时,外循环i=increment开始,直到最后一个数,内循环比较与前面(步长间隔)...

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

目录 1.Shellsort的思想 2.代码实现 3.增量序列 4.算法分析 5.参考资料   Shellsort是最古老的排序算法之一,该算法以其发明者Donald L. Shell的名字命名(19...

2、希尔排序ShellSort()

//希尔排序
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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