You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python用quicksort和selection sort实现大学信息排序功能

需求说明

现有Python代码已完成University类定义、高校信息录入、结果打印的基础逻辑,仅需在标注的预留代码区域补充以下功能:

  • 接收用户输入的排序选项,输入值仅为1或2
  • 输入为1时,采用快速排序(quicksort) 按教职工数字段numberoffaculity从大到小降序排列高校列表
  • 输入为2时,采用选择排序(selection sort) 按学生数字段numberofstudent从小到大升序排列高校列表
  • 不得修改预留区域外的原有代码,排序完成后直接复用原有打印逻辑输出结果
补全后完整代码
class University:
        def __init__(self, name, numberoffaculity, numberofstudent):
            self.name = name
            self.numberoffaculity = numberoffaculity
            self.numberofstudent = numberofstudent


n = int(input())  # Number of universities that user wants to input
universities = []
for i in range(n):
    name = input()
    numberoffaculity = int(input())
    numberofstudent = int(input())
    uni = University(name, numberoffaculity, numberofstudent)
    universities.append(uni)

# Insert your code below this line
# 读取排序选项
sort_opt = int(input())

# 快速排序实现:按教职工数降序
def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    # 取中间元素作为排序基准
    pivot = arr[len(arr) // 2]
    # 拆分三段:教职工数大于基准、等于基准、小于基准
    left_part = [item for item in arr if item.numberoffaculity > pivot.numberoffaculity]
    mid_part = [item for item in arr if item.numberoffaculity == pivot.numberoffaculity]
    right_part = [item for item in arr if item.numberoffaculity < pivot.numberoffaculity]
    # 递归拼接有序结果
    return quick_sort(left_part) + mid_part + quick_sort(right_part)

# 选择排序实现:按学生数升序(原地交换排序)
def selection_sort(arr):
    arr_len = len(arr)
    for i in range(arr_len):
        min_index = i
        # 遍历未排序区间找学生数最小的元素索引
        for j in range(i + 1, arr_len):
            if arr[j].numberofstudent < arr[min_index].numberofstudent:
                min_index = j
        # 把最小值交换到已排序区间的末尾
        arr[i], arr[min_index] = arr[min_index], arr[i]

# 按用户选择执行对应排序逻辑
if sort_opt == 1:
    universities = quick_sort(universities)
elif sort_opt == 2:
    selection_sort(universities)
# Insert your code above this line

for uni in universities:
    print("%-10s %-10d %-10d"
          % (uni.name, uni.numberoffaculity, uni.numberofstudent))
实现说明
  • 快速排序平均时间复杂度为O(nlogn),排序后返回新的有序列表覆盖原列表,同教职工数的元素相对顺序不做额外处理
  • 选择排序时间复杂度为O(n²),采用原地交换逻辑实现,不需要申请额外的列表存储空间
  • 所有补充逻辑均写在指定预留区间内,未修改原有类定义、信息录入和结果打印代码,完全符合题目约束

内容的提问来源于stack exchange,提问作者niksirat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 09:24:21