给出含有n个学生的成绩表,每条记录由学号、姓名和分数组成,编写具体函数完成下列操作:设计一个菜单操作界面,实现录入学生基本信息,直接插入排序,折半插入排序,冒泡排序,快使排序,简单选择排序,输出学生信息,退出等基本操作
时间: 2023-10-20 07:05:22 浏览: 68
好的,我可以给你提供一些 Python 代码,供你参考实现。
首先,我们需要定义一个学生信息的结构体,可以使用 Python 的字典类型来实现。代码如下:
```python
# 定义学生信息结构体
student = {
'id': '',
'name': '',
'score': 0
}
```
接下来,我们可以定义一个学生信息列表,用于存储多个学生信息。代码如下:
```python
# 定义学生信息列表
students = []
```
然后,我们可以实现录入学生信息的功能,代码如下:
```python
# 录入学生信息
def add_student():
s = student.copy()
s['id'] = input('请输入学号:')
s['name'] = input('请输入姓名:')
s['score'] = int(input('请输入分数:'))
students.append(s)
print('录入成功!')
```
接着,我们可以实现直接插入排序算法,代码如下:
```python
# 直接插入排序
def insertion_sort():
n = len(students)
for i in range(1, n):
temp = students[i]
j = i - 1
while j >= 0 and students[j]['id'] > temp['id']:
students[j + 1] = students[j]
j -= 1
students[j + 1] = temp
print('排序成功!')
```
然后,我们可以实现折半插入排序算法,代码如下:
```python
# 折半插入排序
def binary_insertion_sort():
n = len(students)
for i in range(1, n):
temp = students[i]
left = 0
right = i - 1
while left <= right:
mid = (left + right) // 2
if students[mid]['id'] > temp['id']:
right = mid - 1
else:
left = mid + 1
for j in range(i - 1, left - 1, -1):
students[j + 1] = students[j]
students[left] = temp
print('排序成功!')
```
接下来,我们可以实现冒泡排序算法,代码如下:
```python
# 冒泡排序
def bubble_sort():
n = len(students)
for i in range(n - 1):
for j in range(n - 1 - i):
if students[j]['id'] > students[j + 1]['id']:
students[j], students[j + 1] = students[j + 1], students[j]
print('排序成功!')
```
然后,我们可以实现快速排序算法,代码如下:
```python
# 快速排序
def quick_sort(students, left, right):
if left >= right:
return
pivot = students[left]['id']
low = left
high = right
while low < high:
while low < high and students[high]['id'] >= pivot:
high -= 1
students[low] = students[high]
while low < high and students[low]['id'] < pivot:
low += 1
students[high] = students[low]
students[low] = {'id': pivot, 'name': '', 'score': 0}
quick_sort(students, left, low - 1)
quick_sort(students, low + 1, right)
def quick_sort_main():
quick_sort(students, 0, len(students) - 1)
print('排序成功!')
```
最后,我们可以实现简单选择排序算法,代码如下:
```python
# 简单选择排序
def selection_sort():
n = len(students)
for i in range(n - 1):
min_index = i
for j in range(i + 1, n):
if students[j]['id'] < students[min_index]['id']:
min_index = j
if min_index != i:
students[i], students[min_index] = students[min_index], students[i]
print('排序成功!')
```
最后,我们可以实现输出学生信息的功能,代码如下:
```python
# 输出学生信息
def print_students():
for s in students:
print('学号:{},姓名:{},分数:{}'.format(s['id'], s['name'], s['score']))
```
最后,我们可以实现菜单界面,代码如下:
```python
# 菜单界面
def menu():
while True:
print('---------------------------')
print('1. 录入学生信息')
print('2. 直接插入排序')
print('3. 折半插入排序')
print('4. 冒泡排序')
print('5. 快速排序')
print('6. 简单选择排序')
print('7. 输出学生信息')
print('8. 退出')
print('---------------------------')
choice = input('请输入操作编号:')
if choice == '1':
add_student()
elif choice == '2':
insertion_sort()
elif choice == '3':
binary_insertion_sort()
elif choice == '4':
bubble_sort()
elif choice == '5':
quick_sort_main()
elif choice == '6':
selection_sort()
elif choice == '7':
print_students()
elif choice == '8':
break
else:
print('输入错误,请重新输入!')
```
最后,我们可以调用菜单函数来运行程序,代码如下:
```python
# 运行程序
menu()
```
希望这些代码能够帮助你完成实验要求,如果有什么问题可以随时提出。