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

排序--希尔排序

时间:2015-06-18 13:34:41      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

#include<iostream>
using namespace std;
#define SIZE 21
typedef int Sqlist[SIZE];

void ShellInsert(Sqlist &L,int dk,int n)
{
	int i,j;
   for(i=dk;i<n;++i)
   {
      if(L[i]<L[i-dk])
	  {
	     L[0] = L[i];
	     for(j=i-dk;j>0 && L[0]<L[j];j-=dk)
		 {
	       L[j+dk] = L[j];
		 }
	     L[j+dk] = L[0];
	  }
   }
}

void ShellSort(Sqlist &L,int dlta[],int t,int n)
{
	for(int k=0;k<t;++k)
	   ShellInsert(L,dlta[k],n);
}
void main()
{
	Sqlist L= {0,49,38,65,97,76,13,27};
	int dlta[]={5,3,1};
	ShellSort(L,dlta,3,8);
	for(int i=1;i<8;++i)
	  cout<<L[i]<<" ";
	cout<<endl;
}

技术分享

 

分析:希尔排序利用到了:

1.直接插入排序记录较少时,直接插入效率可以大大提高。

2.直接插入排序算法简单,n值很小的时候效率高。

排序--希尔排序

标签:

原文地址:http://blog.csdn.net/zr1076311296/article/details/46546717

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