用Python写一个归并排序代码含注释说明。

用Python写一个归并排序代码含注释说明。

归并排序

# 定义一个函数来合并两个有序的子数组
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)

归并排序是一种分治策略的排序算法,它将一个数组分成两个子数组,分别对它们进行排序,然后合并成一个有序的数组。

用Python写一个归并排序代码含注释说明。

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

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 16 日
下一篇 2024 年 7 月 16 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注