Bitonic sort(双调排序)

怎么保证Bitonic sort算法保证了排序的正确性?希望有同样疑问的你看到这篇文章会有所启示~
摘要由CSDN通过智能技术生成

最近在上Udacity的《Introduction to parallel programming》课程,里面介绍了一种很有趣的平行算法——Bitonic sort(双调排序)算法。在课程上我一直没懂为什么Bitonic sort算法保证了排序的正确性,于是花了几天功夫查找了相关资料。希望有同样疑问的你看到这篇文章会有所启示~


Bitonic sequence

为了明白Bitonic sort算法,我们首先要了解Bitonic sequence(双调序列)。
如果一个序列A=[x0, x1, x2, …, xn-1],存在一个下标i(0≤i≤n-1),使得:

x0≤ x1≤ …≤ xi, and xi≥ xi+1≥ …≥ xn-1

那么我们称这个序列是Bitonic(双调的)。
值得注意的是:
1. 一个序列如果是完全的升序或降序(或者说非降序和非升序更为严谨,但是在本文中为了方便理解,认为升序=非降序,降序=非升序),它也是Bitonic的。
2. Bitonic序列的子序列仍为Bitonic的。
3. 将一个一个Bitonic序列进行循环移位操作后,也是Bitonic序列(比如说(d, a, b, c)向右循环移位一次后变为(c, d, a, b))。
因此Bitonic会出现以下两种形式:
2-form bitonic sequence
这说明,一个序列只要全部循环移位以后,能够出现up->down的形式,就是Bitonic的。

Bitonic sort

介绍完Bitonic序列后,我们首先介绍Bitonic排序算法本身。然后再给出算法正确性的证明。
下图来自wiki,图中对16个元素进行升序排序。

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值