什么是快速排序的最佳输入数组

时间:2016-02-19 23:49:37

标签: algorithm sorting quicksort

我正在努力为quicksort找到性能最佳的输入数组。我的数组是100个元素长,由整数1到100组成。我选择最后一个元素作为透视值。

我知道我希望最后一个元素为50,这样我得到两个长度相等的子数组。然后我知道我希望元素49为25,以便我得到另一个事件分裂。

我对于放置原始25的位置感到有点困惑,因此在第一次拆分之后它位于第49位。任何人都可以帮助我更好地理解算法吗?

我不一定在寻找一个例子,而是一个如何实现这些职位的解释。我想要10,100,1000 ...长度数组的答案。

1 个答案:

答案 0 :(得分:2)

使用最后一个元素作为枢轴的Quicksort的最佳情况是平衡二叉搜索树的后序遍历。例如:

     5
   /   \
  3      7
 / \    / \
1   4  6   8

此二叉树的后序遍历为

1 4 3 6 8 7 5