题目要求对关键字序列k={12,45,21,12,30,2,68,33}进行直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序算法进行排序,要有菜单项进行选择。
时间: 2024-01-06 17:04:47 浏览: 112
好的,我可以为您提供一个简单的排序算法菜单,您可以选择您想要使用的算法进行排序。以下是一个使用 Python 语言实现的排序算法菜单:
```python
def direct_insertion_sort(k):
# 直接插入排序
for i in range(1, len(k)):
tmp = k[i]
j = i - 1
while j >= 0 and k[j] > tmp:
k[j+1] = k[j]
j -= 1
k[j+1] = tmp
return k
def shell_sort(k):
# 希尔排序
n = len(k)
gap = n // 2
while gap > 0:
for i in range(gap, n):
tmp = k[i]
j = i - gap
while j >= 0 and k[j] > tmp:
k[j+gap] = k[j]
j -= gap
k[j+gap] = tmp
gap //= 2
return k
def bubble_sort(k):
# 冒泡排序
for i in range(len(k)-1):
for j in range(len(k)-1-i):
if k[j] > k[j+1]:
k[j], k[j+1] = k[j+1], k[j]
return k
def quick_sort(k):
# 快速排序
if len(k) <= 1:
return k
pivot = k[len(k) // 2]
left = [x for x in k if x < pivot]
middle = [x for x in k if x == pivot]
right = [x for x in k if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
def selection_sort(k):
# 简单选择排序
for i in range(len(k)):
min_idx = i
for j in range(i+1, len(k)):
if k[j] < k[min_idx]:
min_idx = j
k[i], k[min_idx] = k[min_idx], k[i]
return k
# 排序算法菜单
def sort_menu(k):
print("请选择排序算法:")
print("1. 直接插入排序")
print("2. 希尔排序")
print("3. 冒泡排序")
print("4. 快速排序")
print("5. 简单选择排序")
choice = input("您的选择是:")
if choice == '1':
return direct_insertion_sort(k)
elif choice == '2':
return shell_sort(k)
elif choice == '3':
return bubble_sort(k)
elif choice == '4':
return quick_sort(k)
elif choice == '5':
return selection_sort(k)
else:
print("无效的选择,请重新选择。")
return sort_menu(k)
# 测试
k = [12, 45, 21, 12, 30, 2, 68, 33]
print("原序列:", k)
sorted_k = sort_menu(k)
print("排序后:", sorted_k)
```
您可以将以上代码复制到 Python 环境中运行,然后根据提示选择您想要使用的排序算法。
阅读全文