双向冒泡排序

本文介绍了双向冒泡排序的详细实现过程,包括正向冒泡和反向冒泡的步骤,以及如何判断是否需要交换元素。通过示例展示了算法在输入数组23, 45, 2, 15, 9上的执行情况。提供的C++代码实现了该排序算法,并包含了一个静态查找表类`SSearch`,提供了多种查找和排序方法。" 135010766,9236018,西安道通科技面试经验分享,"['面试技巧', 'Linux', '嵌入式开发']
摘要由CSDN通过智能技术生成

这是完全自主编码,哈哈。但是思想还是书上先有的,但是没有具体代码。下面是运行结果截图,输入的为23 ,45,2,15,9

未命名3

未命名3

冒牌排序流程如下,一次正向冒泡,从左至右。然后一次反向冒泡,从右至左。

第一次把最大的记录放到表尾,第二次将最小记录放到表头,如此反复。

pos[0]记录无序序列的第一个位置0,pos[1]记录无序表的最后一个位置len-1;

步长为d,正向冒泡为1,反响冒泡为-1.合并两方向为:

for(int i=pos[(1-d)/2];i!=pos[(1+d)/2];i=i+d).

changeFlag 用来标志是否有交换,如果没有交换则终止循环。

如果有交换,则将最后一次交换的位置赋给change。

在一次循环冒泡结束后将步长取反,如果changeFlag 为真则继续。

在之前的“静态表查找”代码中加入如下函数,实现双向排序功能。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值