| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 648 人关注过本帖
标题:请教有关shell排序的问题
只看楼主 加入收藏
ybjkl
Rank: 2
等 级:论坛游民
帖 子:86
专家分:85
注 册:2011-6-21
结帖率:95.65%
收藏
已结贴  问题点数:20 回复次数:15 
请教有关shell排序的问题
void Shellsort(int R[],int n)
{
    int i,j,temp,d;
    d=n/2;
    while(d>0)
    {
        for(i=d;i<n;i++)
        { j=i-d;
           while(j>=0)
           {
             if(R[j]>R[i])
             {temp=R[j];
              R[j]=R[i];
              R[i]=temp;
              j=j-d;
             }
            else j=-1;
     }
        }
     d=d/2;
    }
}
为什么对9 8 7 6 5 4 3 2 1 0排序的结果是1 0 2 3 4 5 6 7 8 9
这个程序哪出了问题啊?
2011-06-21 22:40
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
在shell下直接用sort就可以了。何必那么费劲呢

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-21 22:49
ybjkl
Rank: 2
等 级:论坛游民
帖 子:86
专家分:85
注 册:2011-6-21
收藏
得分:0 
回复 2楼 ansic
我就想知道这个有什么不对的,有时候排序是对的,有时候又不对。
多谢说清楚点,我是菜鸟,谢谢!
2011-06-21 22:53
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 2楼 ansic
shell sort 是一种算法,不是在 shell 里进行排序。
2011-06-21 22:57
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
在shell下直接使用sort就可以啦

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-21 22:57
ybjkl
Rank: 2
等 级:论坛游民
帖 子:86
专家分:85
注 册:2011-6-21
收藏
得分:0 
回复 5楼 ansic
大哥
现在我不是要解决这个shell排序的问题,是想搞清楚我现在错在哪里?
麻烦仔细看下我的程序,做下修改,不胜感激。
2011-06-21 23:00
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
楼主好像没有理解shell排序的算法。
应该这么写:
程序代码:
void Shellsort(int R[], int n) {
    int i,j,temp,d = (int) ceil(n / 2.0);
    while (d > 0) {
        for (i = d; i < n; i++) {
            temp = a[i];
            for (j = i; j >= d && a[j - d] > temp; j -= d) {
                a[j] = a[j - d];
            }
            a[j] = temp;
        }
        d = (int) round(d / 2.2);
    }
}
2011-06-21 23:07
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
在shell下,不就用sort排序嘛!!!

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-21 23:14
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 8楼 ansic
都已经说了啊,shell sort 是一种排序算法的名字,中文叫做壳排序或者希尔排序,而不是在 shell 下进行排序~~
2011-06-21 23:17
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
不知道。帮顶。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-21 23:23
快速回复:请教有关shell排序的问题
数据加载中...
 
   



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

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