Bitonic Sort
只能用在序列长度是2的幂次
类似快排递归
- bitonic序列: 前一半单调递增, 后一半单调递减的序列
- bitonic pair
- 任意的连个元素可以通过swap转换成bitonic序列
- 复杂度分析
- 时间复杂度: O((logN)^2)
- 空间复杂度: O(N(logN)^2)
- 优势: 并行度好
- 每个pair/swap都可以并行处理
algo
bitonic_sort, 分解整个序列成pair- 左右递归调用, 从细粒度到粗粒度sort
bitonic_merge, 逐步合并成更大的bitonic序列- 依旧左右递归调用, 从粗粒度到细粒度merge
伪代码
1 | // low: 起点index |