|
|
1
1
Batcher的排序是MergeSort和Batcher的合并。 要合并两个数组a和b,batcher的merge将a按正向顺序与b按反向顺序连接起来,从而创建一个双音数组。然后应用batcher的双音排序。 batcher的双音排序是quicksort的表亲。它将数组分成两半,进行一些交换以确保前半部分的元素不大于后半部分的元素,并递归地对两半进行排序。 一个数组是双音的,如果它可以旋转,使其元素增加,然后减少。根据不经意排序的零一原理,证明零一输入的正确性就足够了,我们现在就做这个假设。可能是
和
其中a,b,c是非负整数。双音排序首先将数组分成两个大小相等的部分A和B。有两种可能:
或
或
或者其他三个零和一互换。Batcher的见解是,通过对A[I],B[I]应用一个所有I的比较器,A为全零,B为双音,或者A为双音,B为全一。无论哪种方式,都满足递归排序的前提条件。 唯一不平凡的情况是
以及它的补充。如果w>=y,则a、b变为
所以a是全零,b是双音的。如果是,则
所以B是所有的,A是双音的。如果我们递归地对a和b排序,那么它们的连接就是排序数组。 |
|
|
Rishab · 在并行Java中运行函数 1 年前 |
|
|
Deep · 当您并行化代码时,如何保存两个独立的CSV? 1 年前 |
|
|
Setu · MPI代码的哪些部分是复制的,哪些是共享的? 1 年前 |
|
|
heyula · 如何在mpi中定义本地数组? 2 年前 |
|
|
Rebel · 如何以最有效的方式加速和并行化以下matlab代码? 2 年前 |