问题 E: 【基础】记录排序 输入n个学生记录(每个学生记录包括学号、姓名、年龄、性别、成绩),组成记录数组,然后按成绩由高到低的次序排序,输出排序后的全部学生记录。
时间: 2024-02-07 11:02:21 浏览: 67
java课堂作业:用二维数组存储五个学生姓名学号,并用正则表达式判断输入数据是否有误。输出按学号排序的学生。
5星 · 资源好评率100%
好的,这是一个基本的排序问题。你可以使用快速排序、归并排序或堆排序来实现。下面是一个使用快速排序的示例代码:
```python
class Student:
def __init__(self, id, name, age, gender, score):
self.id = id
self.name = name
self.age = age
self.gender = gender
self.score = score
def quick_sort(records, left, right):
if left >= right:
return
pivot = partition(records, left, right)
quick_sort(records, left, pivot-1)
quick_sort(records, pivot+1, right)
def partition(records, left, right):
pivot = records[left].score
i, j = left, right
while i < j:
while i < j and records[j].score <= pivot:
j -= 1
while i < j and records[i].score >= pivot:
i += 1
records[i], records[j] = records[j], records[i]
records[left], records[i] = records[i], records[left]
return i
# 测试代码
records = [
Student(1, 'Tom', 20, 'M', 80),
Student(2, 'Jerry', 21, 'M', 90),
Student(3, 'Alice', 19, 'F', 85),
Student(4, 'Bob', 22, 'M', 75),
]
quick_sort(records, 0, len(records)-1)
for record in records:
print(record.id, record.name, record.age, record.gender, record.score)
```
这段代码中,我们定义了一个 `Student` 类来表示学生记录。然后使用快速排序算法对学生记录数组进行排序,排序时以学生的成绩作为关键字。最后输出排序后的全部学生记录。
阅读全文