#include<stdio.h>
#include<stdlib.h>
void shellsort(int array[],int len)
{
int dk;
int i;
int j;
for(dk=len/2;dk>=1;dk/=2)
{
for(i=dk+1;i<=len;++i)
{
if(array[i]<array[i-dk])
{
array[0]=array[i];
for(j=i-dk;j>0&&array[0]<array[j];j-=dk)
{
array[j+dk]=array[j];
}
array[j+dk]=array[0];
}
}
}
}
int main(int argc,char *argv[])
{
FILE *fp_input=stdin;
FILE *fp_output=stdout;
fp_input=fopen(argv[1],"r");
int num;
fscanf(fp_input,"%d",&num);
int *array;
int i;
array=(int *)malloc((num+1)*sizeof(int));
for(i=1;i<=num;i++)
{
fscanf(fp_input,"%d",&array[i]);
}
shellsort(array,num);
for(i=1;i<=num;i++)
{
fprintf(fp_output,"%d",array[i]);
}
}
希爾排序/shell sort
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.