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
相关产品推荐
相关产品推荐

