Python 实现归并排序算法

我将帮你实现归并排序算法。

归并排序是一种高效的排序算法,采用分治策略,将待排序的序列分成两个或两个以上子序列,然后对子序列进行排序,最后再将排好序的子序列合并成整体有序序列。归并排序是一种效率高且稳定的算法,它的时间复杂度为 O ( n l o g n ) O(nlogn) O(nlogn),空间复杂度为 O ( n ) O(n) O(n)

以下是一个简单的示例,使用 Python 实现归并排序算法对一个整数列表进行排序,代码如下:

def merge_sort(lists):
    """
    使用归并排序算法对列表进行排序
    """
    if len(lists) <= 1:
        return lists
    # 计算中点,用于将列表拆分成两半
    mid = int(len(lists) / 2)
    # 对列表的前半部分进行归并排序
    left_half = merge_sort(lists[:mid])
    # 对列表的后半部分进行归并排序
    right_half = merge_sort(lists[mid:])

    return merge(left_half, right_half)


def merge(left_half, right_half):
    """
    合并两个有序列表
    """
    # 初始化两个指针,分别指向左右列表的起始位置
    left_index, right_index = 0, 0
    merged_list = []
    # 遍历左右列表,将较小的元素依次添加到结果列表中
    while left_index < len(left_half) and right_index < len(right_half):
        if left_half[left_index] <= right_half[right_index]:
            merged_list.append(left_half[left_index])
            left_index += 1
        else:
            merged_list.append(right_half[right_index])
            right_index += 1
    # 将剩余的元素添加到结果列表中
    merged_list.extend(left_half[left_index:])
    merged_list.extend(right_half[right_index:])

    return merged_list

你可以使用以下方式调用这个函数:

print(merge_sort([1, 3, 9, 23, 45, 89, 55, 32, 12, 100]))

上述示例中,merge_sort函数是一个递归函数,它不断地将列表分成两半并对每一半递归地调用自己,直到分到只有一个或没有元素。merge函数负责将两个已排序的列表合并成一个有序列表。

需要注意的是,上述代码仅为一个简单的示例,你需要将测试数据替换为你自己的真实数据。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值