我正在努力为quicksort找到性能最佳的输入数组。我的数组是100个元素长,由整数1到100组成。我选择最后一个元素作为透视值。
我知道我希望最后一个元素为50,这样我得到两个长度相等的子数组。然后我知道我希望元素49为25,以便我得到另一个事件分裂。
我对于放置原始25的位置感到有点困惑,因此在第一次拆分之后它位于第49位。任何人都可以帮助我更好地理解算法吗?
我不一定在寻找一个例子,而是一个如何实现这些职位的解释。我想要10,100,1000 ...长度数组的答案。
答案 0 :(得分:2)
使用最后一个元素作为枢轴的Quicksort的最佳情况是平衡二叉搜索树的后序遍历。例如:
5
/ \
3 7
/ \ / \
1 4 6 8
此二叉树的后序遍历为
1 4 3 6 8 7 5