shell排序

#include<iostream>
using namespace std;
void insert(int a[],int len,int increment)
{
 //执行插入排序
	int i;
	int j;
	int temp;
	for(i=0;i<len;i+=increment)
	{
		for(j=i+increment;j<len;j+=increment)
		{
                  if(a[i]>a[j])
		   {
			   temp=a[i];
			   a[i]=a[j];
			   a[j]=temp;
		   }
		}
	}
}
int main()
{
	int a[]={2,3,5,8,89,43,34,56};
        int increment;
	int i;
	int len=(sizeof(a)/sizeof(int));
	for(increment=len/2;increment>0;increment/=2)
		insert(a,len,increment);
	for(i=0;i<len;i++)
		cout<<a[i]<<endl;
}	
shell的基本思想是先子序列基本有序,在《数据结构与算法分析》中提到时间复杂度为0(n^1.25),空间复杂度为0(1).

你可能感兴趣的:(数据结构,算法,C和C++基本语法)