| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 357 人关注过本帖
标题:希尔排序
收藏  订阅  推荐  打印
chinahong
Rank: 1
等级:新手上路
帖子:16
积分:280
注册:2008-7-30
希尔排序

设置“监视哨”,写希尔排序,给出详细注释说明,求助各位!
2008-8-1 11:02
很远的那颗星
Rank: 3Rank: 3
等级:中级会员
威望:2
帖子:466
积分:4217
注册:2008-6-30

//给个最简单的,上次写的
/*希尔排序(SHELL SORT),又称缩小增量排序(diminishing-increment sort)
基本思想:设待排序元素序列有N个元素,首先取出一个整数gap<n作为间隔,将全部元素分为gap
个字序列,所有距离为gap的元素放在同一个子序列中,在每一个子序列中分别施行直接插入排序.
然后缩小间隔gap,直到gap等于 1
*/
引用:
/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
#include<iostream>
#include<ctime>
const int MAXSIZE = 30;
int array[MAXSIZE];
void ShellSort(int (&array)[MAXSIZE],const int left,const int right)
{
   
int gap = right-left+1;     //增量的初始值
   
do
   
{
        
gap = gap/3 + 1;   // 求下一增量
        
for (int i=left+gap;i<=right;i++)  //各子充列交错处理
            
if (array[i] < array[i-gap])    //逆序
            
{
               
int temp = array[i], j = i-gap;
                do
               
{
                    
array[j+gap] = array[j];     //后移元素
                    
j = j-gap;                   //现比较前一元素
               
}while (j>left &&temp < array[j]);
            }
    }
while (gap > 1);
}
int main(void)
{
   
srand(unsigned(time(NULL)));
    for (int i=0;i<MAXSIZE;i++)
        array[i] = rand()%10000;
    std::cout<<std::endl<<"***希尔排序(SHELL SORT)***"<<std::endl;
    ShellSort(array,0,MAXSIZE);
    display(array,MAXSIZE);
    return 0;
}
[ 本帖最后由 很远的那颗星 于 2008-8-1 11:33 编辑 ]

Fighting~~~~~~~~
2008-8-1 11:32
chinahong
Rank: 1
等级:新手上路
帖子:16
积分:280
注册:2008-7-30

谢了,似乎你没用监视哨
2008-8-1 16:05
很远的那颗星
Rank: 3Rank: 3
等级:中级会员
威望:2
帖子:466
积分:4217
注册:2008-6-30

似乎你不知希尔排序是什么.

给个链接吧,中学者写的.

http://bbs.bccn.net/viewthread.php?tid=213537&extra=&highlight=%2B%D6%D0%D1%A7%D5%DF&page=1

Fighting~~~~~~~~
2008-8-1 17:10
chinahong
Rank: 1
等级:新手上路
帖子:16
积分:280
注册:2008-7-30

我看是你不会不知道监视哨的用处吧,他可以提高算法效率
任何排序算法都可以用
2008-8-2 08:17
很远的那颗星
Rank: 3Rank: 3
等级:中级会员
威望:2
帖子:466
积分:4217
注册:2008-6-30

...........

Fighting~~~~~~~~
2008-8-3 10:14
共有 356 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.060065 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved