希尔排序

希尔排序是一种改进的插入排序算法,通过分组来减少元素的比较和移动次数,从而提高排序效率。
摘要由CSDN通过智能技术生成

希尔排序属于插入排序的一种。

基本思想:先将整个数组分组,然后分别插入.


#include<stdio.h>
#define MAX 250 

int R[MAX];
//某一确定增量d的希尔排序
void Shell_Pass(int d,int n)
{
	int i,j;
	for(i=d+1;i<=n;i++)
	{
		if(R[i]<R[i-d])
		{
			R[0]=R[i];
			j=i-d;
			do{
				R[j+d]=R[j];
				j=j-d;
			}while(j>0&&R[0]<R[j]);
			R[j+d]=R[0];
		}
	}
	
 } 
 
 void Shell_Sort(int n)
 {
 	int d=n;
 	do{
 		d=d/3+1;
 		Shell_Pass(d,n);
	 }while(d>1);
 }
 
 int main()
 {
 	int n,i,d;
 	printf("希尔排序示例:\n");
 	printf("Please input n above 1 and below %d\n",MAX);
 	scanf("%d",&n);
 	if(n<1||n>MAX)
 	{
 		printf("The n you input is not right!BYE!");
 		return 0;
	 }
	 printf("Please input the array one by one:\n");
	 for(i=1;i<=n;i++)
	 {
	 	scanf("%d",&R[i]);
	 }
	 printf("The a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值