编程实现希尔排序算法,按照非递减排序,测试数据为整数。
Description
第一行是待排序数据元素的个数n;
第二行是待排序的数据元素。
Input
一趟希尔排序后的结果。
Output
1
2
3
|
10
50 36 41 19 23 4 20 18 12 22
|
Sample Input
1
|
4 20 18 12 22 50 36 41 19 23
|
Sample Output
第一趟排序增量d=n/2
#include<stdio.h>
int main(){
void Input(int total);
int total;
while(scanf("%d",&total)!=EOF)
{
Input(total);
}
return 0;
}
void Input(int total)
{
void shellsort(int total,int arr[]);
int arr[1100];
int i;
for(i=0;i<total;i++)
scanf("%d",&arr[i]);
shellsort(total,arr);
}
void shellsort(int total,int arr[])
{
int d=total/2;
int i,j,key;
while(d!=0)
{
for(i=d;i<total;i++)
{
key=arr[i];
j=i-d;
while(j>=0 && key<arr[j])
{
arr[j+d]=arr[j];
j=j-d;
}
arr[j+d]=key;
}
d=d/2;
break;
}
for(i=0;i<total;i++)
printf("%d ",arr[i]);
}
就是插入排序的思想。。