社区
数据结构与算法
帖子详情
求:添加监视哨的希尔排序(shellsort)算法
sxtymk
2006-10-25 08:41:48
如题,我知道shell算法,但不知怎样加监视哨,
听说黄刘生的《数据结构》上有,可是这里的图书馆里没有……
麻烦哪位指点一下,感激不尽!
...全文
265
3
打赏
收藏
求:添加监视哨的希尔排序(shellsort)算法
如题,我知道shell算法,但不知怎样加监视哨, 听说黄刘生的《数据结构》上有,可是这里的图书馆里没有…… 麻烦哪位指点一下,感激不尽!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fiorano
2006-10-30
打赏
举报
回复
清华的那本数据结构,排序的算法里很多都涉及到了监视哨
sxtymk
2006-10-30
打赏
举报
回复
多谢多谢,不过我需要消化一下,貌似少了点什么似的……
不过能找到已经很不错了,再次感谢!
idealguy
2006-10-25
打赏
举报
回复
找到一段,不只对否?
(2)希尔排序
希尔排序(Shell's methed)又称缩小增量排序(diminishing increment sort),它也是一种插入排序类的方法,但在时间效率上较前述几种排序方法有较大的改进。它是一种较快速的排序算法。其时间复杂度是O(n3/2)。
希尔排序产生的原因是来自对直接插入排序的分析,当直接排序中其算法时间复杂度为O(n2) ,但是,若待排记录序列按关键字"基本有序",直接插入排序的效率就可大大提高。希尔排序就是主要针对这一点对直接插入排序进行改进而得到的。
它的基本思想是:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行一次直接插入排序。
在希尔排序中,子序列的构成不是简单地"逐段分割",而是将相隔某个"增量"的记录组成一个子序列。如在第一趟排序时的增量为7,即将相隔为7的元素编成一组进行直接插入排序。第二趟排序时的增量为3,增量进一步缩小。由于在这两趟的插入排序中在子序列中逆序的关键字是跳跃式地移动,从而使得在进行最后一趟增量为1的插入排序时,序列已基本有序,只要作少量比较和移动即可完成排序,因此希尔排序的时间复杂度较直接插入排序低。
下面用算法语言描述的希尔排序:
希尔排序中增量序列的选取是一个复杂的问题,涉及到一些数学上尚未解决的难题。我们不想加以详细讨论。到目前仅得出部分结论:如当增量序列为d[k]=2t-k+l -1时,希尔排序的运行时间为O(n3/2),其中1≤k≤t≤└log2(n+1)┘。增量序列还可以有各种取法, 如d[k]=2t-k,(d=…,9,5,3,2,1)。但请注意:应使增量序列中的值没有除1之外的公因子,并且最后一个增量值必须等于1。
void shellpass(elem a[],int dh){
//进行一趟希尔排序,dh为增量
s=-dh+1; //监视哨位置
for (i=dh;i<=n;i++) { //进行插入排序
a[s]=a[i];
j=i-dh;
x=a[i].key;
while (x0)
s=-dh+1;
}
} void shellsort(elem a[],int d[]){
//希尔排序,d[k]为各趟排序增量序列,d[t]=1
k=1;
while (k<=t) {
shellpass(a,d[k]);
k++;
}
}
内部排序
算法
合集(插入、希尔、起泡、快速、选择、堆、归并和基数排序)
Shell
Sort
( a, dlta2, 3 ); } */ // 起泡排序 //Bubble
Sort
( a ); // 快速排序 //Quick
Sort
( a, 1, LENGTH ); // 选择排序 //Select
Sort
( a ); // 堆排序 //Heap
Sort
( a ); // 归并排序 //...
排序
算法
之
希尔排序
(
Shell
Sort
)
排序
算法
之
希尔排序
(
Shell
Sort
) 前言: 如果数据序列基本有序,使用插入排序更加有效。 基本原理: 1 核心思想:
希尔排序
也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序...
数据结构上机——
希尔排序
(含
监视哨
版本)
首先要明确一下什么是
监视哨
这个词很容易望文生义 ...网上也找不到多
监视哨
的
希尔排序
,着实烧脑。 经过我半小时+的秃头思考后,发现问题在于
监视哨
的key值,每个
监视哨
都必须初始化0,当然作为R[0
数据结构-
算法
: 插入排序(
希尔排序
法)
数据结构-
算法
: 插入排序(
希尔排序
法)
希尔排序
法基本思想
希尔排序
(
Shell
Sort
)又称为“缩小增量排序”。是1959年由D.L.
Shell
提出来的。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔...
希尔排序
(
Shell
Sort
)
希尔排序
(
Shell
Sort
)是插入排序的一种。因D.L.
Shell
于1959年提出而得名。
希尔排序
基本思想 基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录...
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章