码迷,mamicode.com
首页 > 编程语言 > 详细

希尔排序

时间:2015-09-26 23:51:58      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

插入排序的改进。递减增量排序算法。

步长为1时就是插入排序。

#include<stdio.h>

void ShellSort(int a[],int n)

{

 int i,j,k,temp,gap;

 int gaps[]={1,5,13,43,113,297,815,1989,4711,11969,27901,84801,213331};

 for(k=0;gap[k]<n;k++)

 while(--k>=0)

 {

  gap = gaps[k];

  for(i=gap;i<n;i++)

  {

   j=i-gap;

   temp=a[i];

   while((j>=0)&&(a[j]>temp))

   {

    a[j+gap] = a[j];

    j=j-gap;

   }

   a[j+gap] = temp;

  }

 }

}

或者:

void shellSort(int* data,size_t size)

{

 for(int gap = size/2;gap>0;gap/=2)

  for(int i=gap;i<size;++i)

  {

   int key = data[i];

   int j=0;

   for(j=i-gap;j>=0&&data[j]>key;j-=gap)

   {

    data[j+gap] = data[j];

   }

   data[j+gap] = key;

  }

}

 

希尔排序

标签:

原文地址:http://www.cnblogs.com/lsx1993/p/4841494.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!