1. 程式人生 > >希爾排序(減少增量值)

希爾排序(減少增量值)

希爾排序(減少增量值)

#include <stdio.h>
#include<stdlib.h>
void ShellSort(int a[],int n)
{ int i,j,temp,in;
in = n;
while(in>1)
{
in=in/3+1;
for(i=in;i<n;i++)
{
j=i-in;
while(j>=0)
{
if(a[i]<a[j])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
j--;
}
}
}
}
void Print(int a[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%5d",a[i]);
}
}
int main(void)
{
int *a;
int n,i;
printf("請輸入數組長度n= ");
scanf("%d",&n);
a=(int*)malloc(n*sizeof(int));
printf("輸入數組= ");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
ShellSort(a,n);
Print(a,n);
return 0;
}



希爾排序(減少增量值)