[hyfv61nk1j.png]
更formal一点的说法如下,输入是 $s_0,s_1,...$, 我们提前预设条件来得到 Predicate,即每个元素都会根据条件输出True或False。...所以就每个小扫描单独启动一个扫描内核不是很有意义,而且也浪费资源。相反我们可以把这些小扫描作为segment打包进一个大数组。然后利用一个特殊扫描运算符来单独扫描每一分段。...由下图可以看到如要使用归并排序,首先需要将1M的数据分成两半,即500K+500K。然后再重复分半,直到最后得到1M单独的元素。...成为以下的数列:
收集过程:
81, 22, 73, 93, 43, 14, 55, 65, 28, 39
接着再进行一次分配,这次是根据十位数来分配:
分配过程:
0
1 14
2 22 28
3..., 93
这时候整个数列已经排序完毕;如果排序的对象有三位数以上,则持续进行以上的动作直至最高位数为止。