首页 > 编程语言 > 详细

排序--希尔排序

时间:2015-06-18 13:32:57      阅读:206      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!