2、排序算法:使用冒泡和插入两种排序方法对深度排序模块进行设计能够实现升序或降序排序
冒泡排序算法设计:
- 定义一个布尔变量flag,初始设为True,用于标记每一轮是否发生了交换。
- 从数组的第一个元素开始,比较相邻的两个元素,如果顺序不对则交换它们的位置。
- 每一轮比较都会将最大(升序)或最小(降序)的元素移动到数组的末尾。
- 如果在一轮比较中没有发生任何交换,则说明数组已经有序,排序完成。
插入排序算法设计:
- 从第二个元素开始,将其视为已排序部分。
- 从已排序部分的最后一个元素开始,与当前元素比较,如果顺序不对则交换它们的位置,直到找到合适的位置插入。
- 继续下一个元素,重复上述步骤,直到所有元素都被插入到正确的位置。
代码实现(Python):
# 冒泡排序算法
def bubble_sort(arr, reverse=False):
n = len(arr)
for i in range(n-1):
flag = True
for j in range(n-i-1):
if (arr[j] > arr[j+1] and not reverse) or (arr[j] < arr[j+1] and reverse):
arr[j], arr[j+1] = arr[j+1], arr[j]
flag = False
if flag:
break
return arr
# 插入排序算法
def insertion_sort(arr, reverse=False):
n = len(arr)
for i in range(1, n):
key = arr[i]
j = i - 1
while j >= 0 and ((arr[j] > key and not reverse) or (arr[j] < key and reverse)):
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
return arr
使用示例:
arr = [5, 3, 8, 2, 1, 7, 6, 4]
ascending = bubble_sort(arr.copy())
descending = bubble_sort(arr.copy(), reverse=True)
print("冒泡排序升序结果:", ascending)
print("冒泡排序降序结果:", descending)
arr = [5, 3, 8, 2, 1, 7, 6, 4]
ascending = insertion_sort(arr.copy())
descending = insertion_sort(arr.copy(), reverse=True)
print("插入排序升序结果:", ascending)
print("插入排序降序结果:", descending)
输出结果:
冒泡排序升序结果: [1, 2, 3, 4, 5, 6, 7, 8]
冒泡排序降序结果: [8, 7, 6, 5, 4, 3, 2, 1]
插入排序升序结果: [1, 2, 3, 4, 5, 6, 7, 8]
插入排序降序结果: [8, 7, 6, 5, 4, 3, 2, 1]
以上代码实现了冒泡排序和插入排序两种排序方法,可以根据参数设置实现升序或降序排序
原文地址: https://www.cveoy.top/t/topic/h2T4 著作权归作者所有。请勿转载和采集!