发布网友 发布时间:2024-05-07 18:36
共3个回答
热心网友 时间:2024-06-01 11:11
在第一趟快速排序过程中,设轴值为第一个关键字即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的全在左边,大于的全在右边热心网友 时间:2024-06-01 11:07
快速排序又不是只有一种实现的, 就选择哪个值作为中间值就有无数种可能的选择了。 常用的包括: 第一点、中点、最后一点、 这三点的平均值。 这个选择直接影响了第一次的结果。 就算这个选定了,比如第一个,接下来是如何调整还是实现决定, 看你那循环具体怎么写了, 反正只要满足那个左小右大的要求就都是正确的快速排序。热心网友 时间:2024-06-01 11:06
ls正解