悬赏100分!对给定的序列(54,73,21,35,67,78,63,24,89)进行从小到大的排序时,用快排第一次结果是什么

来源:百度知道 编辑:UC知道 时间:2024/06/08 10:07:09
要过程~!好的给100分追加

快速排序又不是只有一种实现的, 就选择哪个值作为中间值就有无数种可能的选择了。 常用的包括: 第一点、中点、最后一点、 这三点的平均值。 这个选择直接影响了第一次的结果。 就算这个选定了,比如第一个,接下来是如何调整还是实现决定, 看你那循环具体怎么写了, 反正只要满足那个左小右大的要求就都是正确的快速排序。
如果非要有个答案的话只能说第一次的结果可能是:

24, 21 , 35, 54, 67, 78, 63, 73, 89

在第一趟快速排序过程中,设轴值为第一个关键字即54 ,先将其放入r[0]中,用low和high来表示整个序列的左右指针,开始时分别位于序列两端,即low=1,high=9.首先high指针从右往左开始扫描,直到扫描到小于轴值的位置停下,本例中,找到24停下,然后将24放入low处,完成第一次交换,此时24的位 置空下,以备存放下一个大于轴值的记录,然后从low=low+1的位置从左到右找大于轴值的记录,找到73停下,将其放入high指示的位置(24的初始位置),将73的位置空下,完成第二次交换,然后从high=high-1的位置再次从右到左查找小于54的记录,找到35,然后完成第三次交换;……直到low和high相遇,将轴值填入low的位置,整个序列完成第一趟交换,这个时候发现小于54的全在左边,大于的全在右边

24 35 21 54 67 78 63 73 89

ls正解