| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1832 人关注过本帖
标题:[求助] Shell排序算法
只看楼主 加入收藏
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
结帖率:66.67%
收藏
 问题点数:0 回复次数:6 
[求助] Shell排序算法
~~~在书上看到了Shell算法`

函数:


void shellsort(int v[],int n)

{
int gap,i,j,temp;


for (gap = n/2; gap > 0; gap /= 2)

for (i = gap; i < n; i++)

for (j=i-gap; j>=0 && v[j]>v[j+gap]; j-=gap)
{

temp = v[j];
v[j] = v[j+gap];
v[j+gap] = temp;

}
}




看了都`~一个字``晕~

然后想了好几个小时```人简直想郁闷了``````

接着在纸上画了一下`~~2个字```晕死``````



去网吧调试一下```一个字`````行!



这样一来我更郁闷了````



谁说能说说是怎么一回事啊````
书上就那两行字````跟不懂啊```










搜索更多相关主题的帖子: Shell 算法 void int 
2007-04-26 15:41
ml342418175
Rank: 1
等 级:新手上路
威 望:1
帖 子:183
专家分:0
注 册:2007-4-13
收藏
得分:0 
我也郁闷!~~~~~~~~~~我还没学到那里呢,我也帮不了你了

做人要洒脱一点,潇洒一点!
2007-04-26 17:34
初心者1号
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-3-31
收藏
得分:0 

你可以向里带如数做一边。最好能把整个程序列出来。

2007-04-26 20:27
LXS2009
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-4-29
收藏
得分:0 

逐步分块比较交换,

2007-04-29 17:47
isabellong
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-4-29
收藏
得分:0 

今天上課剛好講到了SHELL排序,貌似是這樣的:
假如有8個數分別是存在編號為0-7的數組元素中 (n=10)
令gap=n/2
0 1 2 3 4 5 6 7
| |___
|___________|--->比較兩數大小,交換使小數在左
依次再計算剩下的3組

令gap /= 2(即為2)
0 1 2 3 4 5 6 7
| | | |___
| | |_______|
| |___________|------>從右邊的數開始與左邊的數做比較,並交換使小數在左邊
|_______________|
再計算另一組

令gap /= 2(即為1)
從右邊的數開始與左邊的數做比較,並交換使小數在左邊


2007-04-29 21:24
xiaobai1593
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-2-25
收藏
得分:0 
shellsort也叫间隔增序排序法
外部的gap表示以gap为间隔进行几次大的排序(最外层的for)
里面的两个for则是对gap未间隔的数据进行插入排序
2011-03-04 11:39
hannstar2245
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-8-1
收藏
得分:0 
你可以上网看源码,http://baike.baidu.com/picview/549624/549624/0/0b14ad1956b39d5643a9ada8.html#albumindex=0&picindex=1
这个源码可以改成这样
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;
           }
        }
        if(d==5) d=3;
        else d=d/2;
    }
}
2013-08-01 14:28
快速回复:[求助] Shell排序算法
数据加载中...
 
   



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

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