设一组初始记录关键字为(72,73,71,23,94,16,5),则以记录关键字72为基准的一趟快速排序结果为___________________________。
时间: 2023-08-31 08:27:30 浏览: 372
数据结构 快速排序 输出每一趟结果
5星 · 资源好评率100%
### 回答1:
以记录关键字72为基准的一趟快速排序的过程如下:
1. 定义两个指针i和j,分别指向记录序列的第一个和最后一个位置。
2. 从j开始向前扫描,找到第一个小于基准值72的记录,记为a[j]。
3. 从i开始向后扫描,找到第一个大于基准值72的记录,记为a[i]。
4. 交换a[i]和a[j]。
5. 继续执行步骤2-4,直到i>=j为止。
6. 最后将基准值72与a[j]交换,一趟快速排序结束。
在这个例子中,执行一趟快速排序后,记录序列变为(23, 16, 5, 72, 94, 73, 71)。
### 回答2:
以记录关键字72为基准的一趟快速排序结果为(23,16,5,71,72,73,94)。在一趟快速排序中,选择一个基准元素,将小于基准的元素放到左边,大于基准的元素放到右边。首先以关键字72作为基准,通过比较可以将小于72的元素23、16、5和71分别放到基准的左边,大于72的元素73和94放到基准的右边。最后,将基准元素72放到分界点的位置,此时所有小于72的元素都位于72的左边,大于72的元素都位于72的右边,完成了一趟快速排序。最终的结果为(23,16,5,71,72,73,94)。
### 回答3:
设一组初始记录关键字为(72,73,71,23,94,16,5),以记录关键字72为基准的一趟快速排序结果如下:
选取记录关键字72作为基准,定义两个指针i和j分别指向记录的首尾。
按照以下步骤进行排序:
1. 从左到右遍历记录,直到找到比基准值大的记录,将其与j所指的记录进行交换,此时j往前移动一位。
2. 从右到左遍历记录,直到找到比基准值小的记录,将其与i所指的记录进行交换,此时i往后移动一位。
3. 重复执行步骤1和步骤2,直到i和j相遇。
4. 将基准值与i(j)所指的记录进行交换。
根据以上步骤,一趟以记录关键字72为基准的快速排序结果为:
(23, 16, 5, 71, 94, 72, 73)
解释:
首先,从左到右遍历,首先找到比基准值72大的数字71,将其与j指向的数字73进行交换,此时j移动到了71的位置。
接下来,从右到左遍历,找到比基准值72小的数字23,将其与i指向的数字72进行交换,此时i移动到了23的位置。
然后,从左到右遍历,没有找到比基准值大的数字。
继续,从右到左遍历,找到比基准值72小的数字16,将其与i指向的数字71进行交换,此时i移动到了16的位置。
接下来,从左到右遍历,找到比基准值72大的数字94,将其与j指向的数字72进行交换,此时j移动到了94的位置。
最后,从右到左遍历,找到比基准值72小的数字5,将其与i指向的数字16进行交换,此时i移动到了5的位置。
最终,i和j相遇,并将基准值72与i(j)指向的数字进行交换。
经过一趟快速排序后,以记录关键字72为基准的结果为(23, 16, 5, 71, 72, 94, 73)。
阅读全文