shell排序.txt

来自「里面包括了一些acm比赛是常用的函数」· 文本 代码 · 共 34 行

TXT
34
字号
#include "iostream.h"
int d[]={13,11,7,5,3,2,1};
int n;//n为待排数组的长度
void shell(int s[],int dk)
{
   int i;
   for(i=dk+1;i<=n;i++)
	   if(s[i]<s[i-dk])
	   {
	       s[0]=s[i];
		   for(int j=i-dk;j>0&&s[0]<s[j];j=j-dk)
			   s[j+dk]=s[j];
		   s[j+dk]=s[0];	   
	   }
}
void shellsort(int s[],int n)
{
	//按增量序列d[0,……,t-1]对顺序表s[1...n]作希尔排序
	int t=7;
    for(int k=0;k<t;k++)
		shell(s,d[k]);
}
void main()
{
   int s[100];
   cout<<"输入数组长度 n:"<<endl;
   cin>>n;
   for(int i=1;i<=n;i++)
	   cin>>s[i];
   shellsort(s,n);
   for(i=1;i<=n;i++)
	   cout<<s[i]<<' ';
   cout<<endl;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?