# 合并排序算法defmerge_sort(arr):iflen(arr)>1:
mid =len(arr)//2# 找到数组的中点
L = arr[:mid]# 左半部分
R = arr[mid:]# 右半部分# 递归排序左右两部分
merge_sort(L)
merge_sort(R)
i = j = k =0# 初始化索引# 合并两个有序数组while i <len(L)and j <len(R):if L[i]< R[j]:
arr[k]= L[i]
i +=1else:
arr[k]= R[j]
j +=1
k +=1# 检查是否有剩余元素while i <len(L):
arr[k]= L[i]
i +=1
k +=1while j <len(R):
arr[k]= R[j]
j +=1
k +=1return arr
快速排序
# 快速排序算法defquick_sort(arr):iflen(arr)<=1:return arr # 如果数组长度为0或1,直接返回
pivot = arr[len(arr)//2]# 选择中间元素作为基准
left =[x for x in arr if x < pivot]# 小于基准的元素
middle =[x for x in arr if x == pivot]# 等于基准的元素
right =[x for x in arr if x > pivot]# 大于基准的元素# 递归调用return quick_sort(left)+ middle + quick_sort(right)# 测试排序算法if __name__ =="__main__":
sample_array =[64,34,25,12,22,11,90]print("原始数组:", sample_array)print("冒泡排序:", bubble_sort(sample_array.copy()))print("选择排序:", selection_sort(sample_array.copy()))print("插入排序:", insertion_sort(sample_array.copy()))print("合并排序:", merge_sort(sample_array.copy()))print("快速排序:", quick_sort(sample_array.copy()))