测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A40758. 从键盘接收一组不重复整数,并将这组整数按从小到大的顺序排列。以下程序采取快速排序法对这组整数进行排序。快速排序法的原理是:(1)取这组数据中间那个数为锚定值 mid;(2)从这组数据开头往右找,遇到比 mid 大的数则停下, 位置记为 i;(3)从这组数据末尾往左找,遇到比 mid 小的数则停下, 位置记为 j;(4)如果此时 i 仍在 j 左边,即i<=j, 则交换这两个数;(5)重复(2) …

填空题 较难

题目描述

从键盘接收一组不重复整数,并将这组整数按从小到大的顺序排列。

以下程序采取快速排序法对这组整数进行排序。

快速排序法的原理是:

(1)取这组数据中间那个数为锚定值 mid;

(2)从这组数据开头往右找,遇到比 mid 大的数则停下, 位置记为 i;

(3)从这组数据末尾往左找,遇到比 mid 小的数则停下, 位置记为 j;

(4)如果此时 i 仍在 j 左边,即i<=j, 则交换这两个数;

(5)重复(2) ~(4) 直到i、j重合;

(6)对i左边的数进行快速排序;

(7)对右边的数进行快速排序。

输入示例:

请输入需要排序的一组整数,数与数之间用空格隔开: 6 10 11 8 4 1 9 7

输出示例:

排序结果:1 4 6 7 8 9 10 11

程序模板:

def QuickSort(left,right):

        if  ________①____________:

                return

                mid=Numbers[left+(right-left)//2]

                i=left

                j=right

                while i<j:

                        while Numbers[i]<mid:

                                    i+=1

                        while Numbers[j]>mid:

                                    j-=1

                        if i<=j:

                                ________②____________

                        QuickSort(left,j-1)

                        QuickSort(i+1,right)

Numbers=list(map(int,input("请输入需要排序的一组整数,数与数之间用空格隔开: ") .________③____________) )

QuickSort(0, ________④____________)

print("排序结果: ", end="")

for i in Numbers:

        print(i,end=" ")

参考答案

def QuickSort(left, right): if left >= right: return mid = Numbers[left+(right-left) // 2] i = left j = right while i < j: while Numbers[i] < mid: i += 1 while Numbers[j] > mid: j -= 1 if i <= j: Numbers[i], Numbers[j] = Numbers[j], Numbers[i] QuickSort(left, j-1) QuickSort(i+1, right) Numbers = list(map(int, input("请输入需要排序的一组整数, 数与数之间用空格隔开: ") . split())) QuickSort(0, len(Numbers) - 1) print("排序结果: ", end="") for i in Numbers: print(i, end=" ")

答案解析

评分标准:

(1)left>=right; (2 分)

(2)Numbers[i],Numbers[j]=Numbers[j],Numbers[i] ; (2 分)

(3)split() ; (2 分)

(4)len(Numbers) -1。 (2分)

上一题 下一题