码迷,mamicode.com
首页 > 编程语言 > 详细

希尔排序

时间:2015-06-02 22:01:52      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

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

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

}


就是插入排序的思想。。

希尔排序

标签:

原文地址:http://blog.csdn.net/believe__dream/article/details/46334925

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!