15.1双调排序(Bitonic sort)
概述
双调合并排序(Bitonic mergesort)是一个并行排序算法。它也用作建立一个排序网络的一种构造方法。这个算法是由Ken Batcher提出来的。基于它生成的排序网络包含了个比较操作和
的延时,这里的n是要排序的元素个数。
一个排好序的序列是一个单调非降(或单调非增)序列。一个双调序列是一个满足对于特定的k(),
,或者是该序列的循环移位序列。
例如,
或者
双调排序的基本思路
考虑到大小是 n 的双调序列 S , 它的前半部分是递增的,后半部分
是递减的。
可以通过“Pair-wise min-max comparison”,将一个双调序列,分裂成两个双调序列。如下所示:
,
这两个子双调序列有如下特性:
和
都是双调序列。
中存在一个元素b满足:b前面的元素递增,b后面的元素递减。
中存在一个元素c满足:c前面的元素递减,c后面的元素递增。
中的所有元素小于
中的元素(因为,b是的最大值,c是的最小值)。
这4个特征是双调排序的基础。
使用双调序列合并完成双调序列排序
标识是一个递增序列,
标识是一个递减序列。
上面的排序还差最后一步才能完成。左边是输入,右边是输出。
下图是一个完整的双调排序图。
其中,
- 浅蓝色:标识是一个单调递增序列;
- 浅绿色,标识一个单调递减序列;
- 箭头的尾指向头,是指这两个数值作比较和交换,箭头指向的那条线存储max,箭头尾部那条线存储min。
我认为双调排序在排序算法中性能肯定不是最优的,但是,它的优势在于并行化。可以看到,它的每一级合并操作都是并行的。
15.1双调排序(Bitonic sort)相关推荐
- 三十分钟理解:双调排序Bitonic Sort,适合并行计算的排序算法
双调排序是data-independent的排序, 即比较顺序与数据无关的排序方法, 特别适合做并行计算,例如用GPU.fpga来计算. 1.双调序列 在了解双调排序算法之前,我们先来看看什么是双调序 ...
- bucket sort sample sort 并行_双调排序Bitonic Sort,适合并行计算的排序算法
双调排序是data-independent的排序, 即比较顺序与数据无关的排序方法, 特别适合做并行计算,例如用GPU.fpga来计算. 1.双调序列 在了解双调排序算法之前,我们先来看看什么是双调序 ...
- 双调排序(Bitonic sort)学习
之前的时候参加浙大的考核,学习了一下双调排序,正好现在在学习CUDA编程,因此把之前的学习成果整理一下. 问题说明: *********************** 给出分成m段 的n个浮点数,输 ...
- CUDA(六). 从并行排序方法理解并行化思维——冒泡、归并、双调排序的GPU实现
在第五讲中我们学习了GPU三个重要的基础并行算法: Reduce, Scan 和 Histogram,分析了 其作用与串并行实现方法. 在第六讲中,本文以冒泡排序 Bubble Sort.归并排序 M ...
- FPGA设计篇之双调排序
FPGA设计篇之双调排序(Bitonic Sort) 一.写在前面 二.双调排序算法原理 2.1 双调序列 2.2 Batcher定理 2.3 双调排序算法 2.4 构造双调序列 三.双调排序算法RT ...
- 并行计算实战-双调排序
1.双调序列 假设序列A是一个单调递增序列,B是一个单调di'j递减序列,那么由A与B拼接而成的序列C就是一个双调序列.如图1: 接下来我们要介绍的一个概念是双调分裂操作: 1)将数列的前半部分的各个 ...
- 算法 - 并行排序算法之双调排序(Bitonic_Sort)
目录 引言: 了解: 什么是并行计算: 并行计算分为时间上并行和空间上并行: 并行排序算法与双调排序之间的关系: 学习: 双调排序(Bitonic_Sort)的介绍及原理: 双调排序中的双调序列: 贝 ...
- C++Bitonic Sort双调排序/比并排序的实现算法(附完整源码)
C++Bitonic Sort双调排序/比并排序的实现算法 C++Bitonic Sort双调排序/比并排序的实现算法完整源码(定义,实现,main函数测试) C++Bitonic Sort双调排序/ ...
- 【并行计算】Bitonic Sort(双调排序)基础
双调序列 双调序列(Bitonic Sequence)是指由一个非严格增序列X和非严格减序列Y构成的序列,比如序列(23,10,8,3,5,7,11,78). 定义:一个序列a1,a2,-,an是双调 ...
最新文章
- 每日学习笔记(18)
- no scp yes 不提示_linux脚本实现scp命令自动输入密码和yes/no等确认信息
- python中的抽象含义_Python中下划线的5种含义你都知道吗?
- linux创建永不过期用户,linux下如何设置用户密码永不过期_网站服务器运行维护...
- 分数优先遵循志愿php源码_分数优先 遵循志愿
- 大专学的pHp找什么工作,大专毕业能做什么工作 毕业都去干嘛了
- vbs按钮传递过程_哈希传递攻击仍然是一种威胁
- geoda空间自相关分析_【方法笔记4】Geoda空间计量1 空间自相关
- 程序员面试金典——5.3最接近的数
- Hive依据key获取value
- View相关知识学习总结
- 数字云财务迈入价值重塑新阶段,未来财务已来
- 20181120 复习菜鸟教程中的node.js
- android listview表格分页显示,android实现listview分页的方法
- 干货:分析学中常用的3种分析方法!
- C++ 模板的显示具体化
- Red Gate 破解
- 用Java实现二叉树的遍历
- python条件运算符_Python中的条件运算符
- decodeString