(1) 写一个菜单程序,可选择调用任何一种排序函数。 (2) 控制台输入要排序的整数。 (3) 完成直接插入排序,折半插入排序,冒泡排序,快速排序四种排序算法的实现。
时间: 2024-03-20 21:44:32 浏览: 278
简单选择排序,输出每趟结果
5星 · 资源好评率100%
好的,我来帮你解答这个问题。
首先,我们需要定义四种排序算法的函数,分别是直接插入排序、折半插入排序、冒泡排序和快速排序。这四种排序算法都是常见的排序算法,具体实现可以参考相关的资料。
以下是四种排序算法的函数实现:
```python
def insert_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 binary_insert_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
low, high = 0, i - 1
while low <= high:
mid = (low + high) // 2
if key < arr[mid]:
high = mid - 1
else:
low = mid + 1
for j in range(i - 1, high, -1):
arr[j + 1] = arr[j]
arr[high + 1] = key
return arr
def bubble_sort(arr):
for i in range(len(arr)):
for j in range(len(arr) - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left, right, equal = [], [], []
for num in arr:
if num < pivot:
left.append(num)
elif num > pivot:
right.append(num)
else:
equal.append(num)
return quick_sort(left) + equal + quick_sort(right)
```
接下来,我们需要编写一个菜单程序,让用户可以选择调用哪种排序函数。以下是菜单程序的实现:
```python
if __name__ == '__main__':
arr = input("请输入要排序的整数,以空格分隔:").split()
arr = [int(num) for num in arr]
while True:
print("请选择要调用的排序算法:")
print("1. 直接插入排序")
print("2. 折半插入排序")
print("3. 冒泡排序")
print("4. 快速排序")
print("5. 退出程序")
choice = int(input())
if choice == 1:
print("直接插入排序结果:", insert_sort(arr))
elif choice == 2:
print("折半插入排序结果:", binary_insert_sort(arr))
elif choice == 3:
print("冒泡排序结果:", bubble_sort(arr))
elif choice == 4:
print("快速排序结果:", quick_sort(arr))
elif choice == 5:
break
else:
print("无效的选择,请重新输入!")
```
这样,我们就实现了一个菜单程序,可以选择调用任何一种排序函数,并对用户输入的整数进行排序。
阅读全文