有一组数组{25、50、70、21、4、18、100、43、7、12}用快速排序,求快速排序的做题方法技巧,和原理。

如题所述

12、7、18、21、4、25、100、43、70、50
你好,首先很愿意帮助你。我回答过同一类型的题。我把我回答的记录复制给你,如果还是没有帮助的话,我再详细的做一下你给的题目。先提示一句:一般来说快速排序,哨兵是第一个元素,放在0地址里。原始位置空下。 还有 快速排序也是两种有序的,我的例子是非递减。
eg:
对集合(19,14,23,01,68,84,27)以19为枢轴元素,画出一趟快速排序的过程。求数据结构的答案...

我的回答:
[19] ___ 14 23 01 68 84 27 哨兵同27对比
[19] ___ 14 23 01 68 84 27 同84比
[19] ___ 14 23 01 68 84 27 同68比
[19] 01 14 23 __ 68 84 27 同01比 前置
[19] 01 14 23 — 68 84 27 同14比
[19] 01 14 — 23 68 84 27 同23比较 后置
(01 14 ) 19 ( 23 68 84 27 ) 哨兵恢复 第一趟快速排序完成

希望对你有帮助。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-30
先看懂他的代码,实在不行,建议去看b站或者mooc上看陈越姥姥的数据结构,有演示。
快速排序,一般默认第一个是主元,先和最后一个比较。(如果主元和他 对面的数 (反向)比较,不能保持小->大的顺序就换位),直到全部比较完,就完成一趟排序。
第二趟以后的都是递归快排,以第一趟的主元作为两个部分的分割,两边同时递归快排(同第一趟)。
第2个回答  2018-03-02
{25、50、70、21、4、18、100、43、7、12}
先选第一个,把小于他的放在左边,大于他的放在右边:

{21、4、18、7、12}、25、{50、70、100、43}
去掉空的数组,找到长度大于1的数组,重复同样的动作
{21、4、18、7、12}、25、{50、70、100、43}
{4、18、7、12}、21、{}、25、{50、70、100、43}
{}、4、{18、7、12}、21、25、{50、70、100、43}
4、{7、12}、18、{}、21、25、{50、70、100、43}
4、{}、7、{12}、18、{}、21、25、{50、70、100、43}
4、7、{12}、18、21、25、{43}、50、{70、100}
4、7、{12}、18、21、25、{43}、50、{}、70、{100}
4、7、{12}、18、21、25、{43}、50、70、{100}
最后整合
{4、7、12、18、21、25、43、50、70、100}
第3个回答  2013-01-03
同学,这种东西还是去看课本吧,这样才能学到精髓。其实很简单,把第一个数作为枢轴变量,第一次排序后,枢轴变量左边的都小于它,右边的都大于这个枢轴变量;然后把枢轴变量的左边和右边的序列分别运用上面的方法。祝你好运。详细原理课本吧!
第4个回答  2013-01-03
{12、7、18、21、4、25、100、43、70、50}。
相似回答