标题:希尔排序求解
取消只看楼主
petsgf
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-9-11
结帖率:0
已结贴  问题点数:20 回复次数:3 
希尔排序求解
#include <stdio.h>
#include <stdlib.h>

void sort(int s[],int n, int d)
{
    int i,j;
    for(i = d+1;i<n;i++)
    if(s[i]<s[i-d])
    {
        s[0]= s[i];
        j=i-d;
        do
        {
            s[j+d] =s[j];
            j -= d;
        }
        while(j>0&&s[0]<s[j]);
        s[j+d]=s[0] ;
    }
 }
 
 void shellsort(int r[],int n)
 {
     int d=n;
     do
     {
      d = d/3+1;
      sort(r,n,d);   
    }
    while(d>1);
 }
 
 int main()
 {
     int i,x[11];
     printf("请输入十个整数:");
     for(i=1;i<=10;i++)
     {
     scanf("%d",&x[i]);   
     }
     puts("你输入的序列是:") ;
     for(i=1;i<=10;i++)
     printf("%3d ",x[i]);
     shellsort(x,11);
     printf("\n希尔排序的结果如下:");
     for(i=1;i<=10;i++)
     printf("%3d",x[i]);
     printf("\n");
 }
 
 
 大佬梦帮我看看这个程序,解析以下。为啥我排不出来啊。。。。
d = d\3+1不是为4吗???
s[i]<s[i-d]有很多都不满足啊。。。。
 
搜索更多相关主题的帖子: for i++ printf int 排序 
2020-09-11 14:07
petsgf
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-9-11
得分:0 
顶!!!!!

2020-09-11 14:13
petsgf
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-9-11
得分:0 
回复 3楼 apull
我就是用421算的,结果搞不懂sort函数怎么排序的,排不出来
2020-09-11 20:09
petsgf
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-9-11
得分:0 
自己鼓捣出来了,谢谢那位老哥

2020-09-11 20:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503127-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.283989 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved