python输入学生姓名,学号,年龄,数据结构课程成绩,按成绩从小到大排序;成绩相同,按学号从小到大排序。要求使用插入排序来实现。第1轮插入第1个元素,以后每一轮按输入顺序插入- 个元素,输出第1, 2, ... N轮的插入排序结果。 第一-行是一个整数N (N<1000) , 表示元素个数;接下来N行每行描述一一个元素, 姓名都是长度不超过20的字符串,学号,年龄和成绩都是整型。 输出N行。 第1行是1个元素。 第2行是2个元素按要求排序,按序输出学生学号。学号间隔开一个空格。 第3行是3个元素按要求排序,按序输出学生学号。学号间隔开一一个空格。 依次类推。
时间: 2024-01-21 09:16:24 浏览: 71
以下是代码实现:
```python
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and (arr[j][3] > key[3] or (arr[j][3] == key[3] and arr[j][1] > key[1])):
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
n = int(input())
students = []
for i in range(n):
name, id, age, grade = input().split()
students.append((name, int(id), int(age), int(grade)))
insertion_sort(students[:i+1])
for j in range(i+1):
print(students[j][1], end=' ')
print()
```
这里使用了一个 `insertion_sort` 函数来进行插入排序,参数 `arr` 是一个元组列表,每个元组包含学生的姓名、学号、年龄和成绩。在排序过程中,如果成绩相同,就按学号从小到大排序。
接下来,我们依次读入每个学生的信息,将其加入列表中,并按输入顺序插入列表中。每次插入后,输出当前列表按要求排序后的学生学号。
阅读全文