希尔排序

编程实现希尔排序算法,按照非递减排序,测试数据为整数。

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]);

}


就是插入排序的思想。。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。