当比较结果赋值给整数时:
r1 = A>B
r2 = B>C
我们不需要比较 A 和 C,因为
r3 = r1 * r2 = 1
仅当
A>C
对吧?只需 2 次比较和 1 次乘法即可确定 A>C。
继续添加一个元素:
r4 = C>D
r3 * r4 = A>D
r1 * r4 = not needed as a,b and c,d are independent
r2 * r4 = B>D
...
那么,是否有一种简单的乘法/加法方法来找到所有元素的比较矩阵,而无需进行比 N 更多的比较?因为使用这样的矩阵,可以比 O(N^2) 比较更快地对唯一元素数组进行排序(但包括乘法在内的总运算次数仍应保持不变)。这可以建模为矩阵乘法运算吗(也许可以在 CUDA GPU 的张量核心中加速)?
编辑:从 derpirscher 的评论来看,它应该需要的不仅仅是相邻的比较。
i: index
i > i+1
i > i+2
i > i+4
i > i+8
i > i+N/2 ----> log2 steps ---> nlogn