1. 程式人生 > >資料結構 希爾排序

資料結構 希爾排序

#include<iostream>//引入輸入輸出流 
#include<stdlib.h>//使用庫函式srand和rand 
#include<time.h>//使用庫函式time
using namespace std;
const int Max=10;
void Creat(int r[],int n);
void ShellSort(int r[],int n);
int main()
{
	int a[Max+1]={0},b[Max+1]={0};
	int i=0;
	Creat(a,Max);
	for(i=1;i<=Max;i++)//將陣列a複製一份到陣列b
	b[i]=a[i];
	cout<<"對於無序序列:";
	
	
	for(i=1;i<Max;i++)
	cout<<b[i]<<" ";
	cout<<endl;
	
	ShellSort(a,Max);
	cout<<"執行希爾排序後,元素為:";
	for(i=1;i<Max;i++)
	cout<<a[i]<<" ";
	cout<<endl; 
	return 0; 
}
void Creat(int r[],int n)
{
	int i=0;
	srand(time(NULL));
	for(i=1;i<=n;i++)
	r[i]=1+rand()%100;//待排序記錄為二位數 
}
void ShellSort(int r[],int n)
{int i,d,j;
	for( d=n/2;d>=1;d=d/2)
	{
		for(i=d+1;i<=n;i++)
		{
			r[0]=r[i];
			for( j=i-d;j>0&&r[0]<r[j];j=j-d)
			r[j+d]=r[j];
			r[j+d]=r[0];
		}
	}
}