希尔排序(含监视哨)

阅读: 评论:0

希尔排序(含监视哨)

希尔排序(含监视哨)

希尔排序(含监视哨)
原理希尔排序称为缩小增量排序,就是将一串数字分为若干子序列分别进行直接插入排序。希尔排序需要取一间隔值,一般为输入数字的一半,然后每趟变为之前间隔值的一半。
如输入8个数字,那间隔值为8/2第二趟就为4/2如此类推。
安装监视哨方法设置一个为r[9]大小的数组,而输入数字从r[1]开始,这样r[0],就空出来没有用,就可以作为监视哨了。不用担心监视哨的值是否丢失的问题,因为我们是从r[1]开始数的。
以下为代码
#include<stdio.h>
#define key 9
void main()
{
int n=key-1,i, r[key];
int j,d=n/2;
for (i = 1; i <key; i++)//输入八个数字
scanf_s(“%d”, &r[i]);
while (d > 0)
{
for (i = d; i < key; i++)
{
r[0] = r[i];//存入监视哨
j = i - d;//前面的一个数字是间隔d注意
while (j>0&&r[0] < r[j])
{
r[j + d] = r[j];
j = j - d;//往前比较与直接插入排序一样
}
r[j + d] = r[0];//将值放到正确位置
}
d = d / 2;
}
for (i = 1; i < key; i++)
printf(“%4d”, r[i]);
}
输出的结果

-1 25 45 96 58 -36 -789 96
-789 -36 -1 25 45 58 96 96
D:数据结构希尔排序Debug希尔排序.exe (进程 11028)已退出,代码为 0。
按任意键关闭此窗口. . .

本文发布于:2024-01-28 18:53:20,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064392069527.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:希尔
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23