给定一个无序List = [23,17,89,56,43,25,99],对List进行(冒泡排序、插入排序),编写函数实现,并设置从大到小和从小到大的输入参数
时间: 2024-03-08 11:47:16 浏览: 48
关于冒泡排序的代码实现
好的,下面是 Python 实现的冒泡排序和插入排序算法,并且支持从大到小和从小到大两种排序方式。
```python
# 冒泡排序函数
def bubble_sort(arr, reverse=False):
n = len(arr)
# 遍历所有数组元素
for i in range(n):
# Last i elements are already sorted
for j in range(0, n-i-1):
# 判断是否需要交换位置
if (not reverse and arr[j] > arr[j+1]) or (reverse and arr[j] < arr[j+1]):
# 交换位置
arr[j], arr[j+1] = arr[j+1], arr[j]
# 插入排序函数
def insert_sort(arr, reverse=False):
n = len(arr)
# 从第二个元素开始遍历
for i in range(1, n):
# 当前值
current_value = arr[i]
# 指针,用于在已排序列表中找到合适的位置插入当前值
j = i - 1
# 向前遍历已排序列表,查找合适的位置
while j >= 0 and ((not reverse and arr[j] > current_value) or (reverse and arr[j] < current_value)):
arr[j+1] = arr[j]
j -= 1
# 插入当前值
arr[j+1] = current_value
# 测试代码
List = [23, 17, 89, 56, 43, 25, 99]
# 冒泡排序从小到大
bubble_sort(List)
print("冒泡排序从小到大:", List)
# 冒泡排序从大到小
bubble_sort(List, True)
print("冒泡排序从大到小:", List)
# 插入排序从小到大
insert_sort(List)
print("插入排序从小到大:", List)
# 插入排序从大到小
insert_sort(List, True)
print("插入排序从大到小:", List)
```
输出结果:
```
冒泡排序从小到大: [17, 23, 25, 43, 56, 89, 99]
冒泡排序从大到小: [99, 89, 56, 43, 25, 23, 17]
插入排序从小到大: [17, 23, 25, 43, 56, 89, 99]
插入排序从大到小: [99, 89, 56, 43, 25, 23, 17]
```
这段代码实现了冒泡排序和插入排序算法,可以根据 `reverse` 参数判断排序方式。
阅读全文