使用快速排序对以下数组 a 进行排序,
[6, 11, 4, 9, 8, 2, 5, 8, 13, 7]
主元应选择为第一个和最后一个元素的算术平均值,即(a[0] + a[size - 1]) / 2 (rounded down)
.
显示所有重要步骤,例如分区和算法的递归调用。
我了解如何使用快速排序对数组进行排序,但是我不确定如何计算枢轴。
枢轴的计算方法是6 + 7 = 13
then 13 / 2 = 6.5
(向下舍入是6
)所以枢轴是2
(即第六个元素)?
我知道小于主元的元素出现在左侧,大于主元的元素出现在右侧,并且分区重复对子数组进行排序的这一步骤。
任何帮助将不胜感激。
对于快速排序,枢轴可以是您想要的任何元素。
查看维基百科.
这个问题很容易解决,选择一个随机索引对于枢轴,选择中间指数分区的或(特别是对于较长的分区)选择第一个、中间和最后一个元素的中位数枢轴的分区
因此三个选择:
- 第一个元素
- 中元
- 第一个、中间和最后一个的中位数。
在你的情况下使用第一个和最后一个元素的平均值value会给你:
6 + 7 = 13
13 / 2 = 6.5
6.5 rounded down = 6
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)