微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

shell插入排序算法

/*shell插入排序算法的平均时间复杂度为O(n^1.3),
它为不稳定排序算法,
d为每次所分组数(初始为n/2)。
*/

#include <stdio.h>
int sum[1010];
int main()
{
	int n,i,j,d,temp;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&sum[i]);
	}
	d=n/2;
	while(d>=1)
	{
		for(i=d+1;i<=n;i++)
		{
			temp=sum[i];
			j=i-d;
			while(temp<sum[j]&&j>0)
			{
				sum[j+d]=sum[j];
				j-=d;
			}
			sum[j+d]=temp;
		}
		d/=2;
	}
	for(i=1;i<=n;i++)
		printf("%d ",sum[i]);
	printf("\n");
return 0;
}

原文地址:https://www.jb51.cc/bash/391985.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐