
归并排序
# 定义一个函数来合并两个有序的子数组
def merge(left, right):
# 初始化结果数组和两个指针
result = []
i = 0
j = 0
# 循环遍历两个子数组,比较它们的元素,将较小的元素放入结果数组中
while i < len(left) and j < len(right):
if left[i] <= right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
# 将剩余的元素也放入结果数组中
result += left[i:]
result += right[j:]
# 返回结果数组
return result
# 定义一个函数来实现归并排序
def merge_sort(array):
# 如果数组长度小于等于1,直接返回该数组(递归基)
if len(array) <= 1:
return array
# 否则,找到数组的中点,将其分成左右两个子数组(递归步)
mid = len(array) // 2
left = array[:mid]
right = array[mid:]
# 对左右两个子数组分别进行归并排序(递归调用)
left_sorted = merge_sort(left)
right_sorted = merge_sort(right)
# 然后将两个有序的子数组合并成一个有序的数组(调用合并函数)
return merge(left_sorted, right_sorted)
# 测试代码
array = [5, 3, 7, 2, 9, 4, 6]
print("Original array:", array)
sorted_array = merge_sort(array)
print("Sorted array:", sorted_array)
归并排序是一种分治策略的排序算法,它将一个数组分成两个子数组,分别对它们进行排序,然后合并成一个有序的数组。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/80984
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!