希尔排序

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

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

}


就是插入排序的思想。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值