双向冒泡排序

这是完全自主编码,哈哈。但是思想还是书上先有的,但是没有具体代码。下面是运行结果截图,输入的为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、付费专栏及课程。

余额充值