Big o 快速排序算法-只需要n-1比较的分区。我怎样才能做到这一点?

Big o 快速排序算法-只需要n-1比较的分区。我怎样才能做到这一点?,big-o,complexity-theory,quicksort,partition,Big O,Complexity Theory,Quicksort,Partition,“我们已经看到partition()执行n次比较(可能是n次比较)−1或 n+1,取决于实施情况) 资料来源: 如果我取一个像1,2,3,4,5,6,7,8这样的序列(8作为枢轴元素,n=8) 我想我至少有8次比较,而不是7次(n-1) 如果我从左向右移动,找到一个大于8的元素 1

“我们已经看到partition()执行n次比较(可能是n次比较)−1或 n+1,取决于实施情况)

资料来源:

如果我取一个像1,2,3,4,5,6,7,8这样的序列(8作为枢轴元素,n=8) 我想我至少有8次比较,而不是7次(n-1)

如果我从左向右移动,找到一个大于8的元素

  • 1<8
  • 2<8
  • 3<8
  • 4<8
  • 5<8
  • 6<8
  • 7<8
  • 至少进行一次比较,以检查是否找到一个更小的元素8/以检查是否存在索引。 8.i
    哪个分区实现只需要n-1比较?

    n-1比较发生在枢轴从未移动且从未与自身比较时,例如Lomuto分区方案

    Hoare分区方案比Lomuto进行更多的比较,但通常交换次数较少

    在我的基准测试中,我发现对于几乎没有重复的伪随机数据,Lomuto稍微快一点。如果重复的数量很大,Hoare会更快,在所有相等元素的情况下,这是Lomuto的最坏情况O(n^2)和Hoare的最佳情况O(n log2(n))