1.设计一个程序,用于演示直接插入排序法、冒泡排序法和简单选择排序法,要求采用菜单的形式进行选择。 2.测试数据:265,301,751,129,937,863,742,694,76,438 3.测试: 分别用上面的数据测试直接插入排序法、冒泡排序法和简单选择排序法,并把排序结果输出。
时间: 2024-03-27 17:36:23 浏览: 13
好的,我会帮您回答这个问题。
以下是一个用 Python 编写的程序,用于演示直接插入排序法、冒泡排序法和简单选择排序法,采用菜单的形式进行选择,并对测试数据进行排序并输出排序结果:
```python
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and key < arr[j]:
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
return arr
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
def print_menu():
print("请选择排序算法:")
print("1. 直接插入排序")
print("2. 冒泡排序")
print("3. 简单选择排序")
print("4. 退出程序")
def main():
arr = [265, 301, 751, 129, 937, 863, 742, 694, 76, 438]
while True:
print_menu()
choice = int(input("请输入数字选择排序算法:"))
if choice == 1:
print("排序前:", arr)
sorted_arr = insertion_sort(arr.copy())
print("排序后:", sorted_arr)
elif choice == 2:
print("排序前:", arr)
sorted_arr = bubble_sort(arr.copy())
print("排序后:", sorted_arr)
elif choice == 3:
print("排序前:", arr)
sorted_arr = selection_sort(arr.copy())
print("排序后:", sorted_arr)
elif choice == 4:
break
else:
print("输入错误,请重新输入!")
if __name__ == "__main__":
main()
```
运行程序后,会显示一个菜单,让您选择要使用哪种排序算法。根据您的选择,程序会对测试数据进行相应的排序,并输出排序结果。
例如,如果您选择直接插入排序算法,程序会输出以下结果:
```
请选择排序算法:
1. 直接插入排序
2. 冒泡排序
3. 简单选择排序
4. 退出程序
请输入数字选择排序算法:1
排序前: [265, 301, 751, 129, 937, 863, 742, 694, 76, 438]
排序后: [76, 129, 265, 301, 438, 694, 742, 751, 863, 937]
```
同样,如果您选择冒泡排序算法,程序会输出以下结果:
```
请选择排序算法:
1. 直接插入排序
2. 冒泡排序
3. 简单选择排序
4. 退出程序
请输入数字选择排序算法:2
排序前: [265, 301, 751, 129, 937, 863, 742, 694, 76, 438]
排序后: [76, 129, 265, 301, 438, 694, 742, 751, 863, 937]
```
最后,如果您选择简单选择排序算法,程序会输出以下结果:
```
请选择排序算法:
1. 直接插入排序
2. 冒泡排序
3. 简单选择排序
4. 退出程序
请输入数字选择排序算法:3
排序前: [265, 301, 751, 129, 937, 863, 742, 694, 76, 438]
排序后: [76, 129, 265, 301, 438, 694, 742, 751, 863, 937]
```