ITPub博客

首页 > 数据库 > 数据库开发技术 > 今日代码大赏 | Python 实现归并排序算法

今日代码大赏 | Python 实现归并排序算法

原创 数据库开发技术 作者:程序员鱼皮 时间:2024-04-14 18:31:49 0 删除 编辑

前两天我们分享了 Java 实现快速排序算法和冒泡排序算法,不知道大家都学到了吗?

为了照顾到每位同学,今天我们用 Python 实现下另外一种算法 — 归并排序算法。

首先来介绍下归并排序,归并排序是一种分治算法,它将数组分为两半,分别对它们进行排序,然后将排序后的两个子数组合并成一个有序数组。

Python 实现归并排序算法示例代码:

def merge_sort(arr):
    if len(arr) > 1:
        mid = len(arr) // 2
        left_half = arr[:mid]
        right_half = arr[mid:]

        merge_sort(left_half)
        merge_sort(right_half)

        i = j = k = 0

        while i < len(left_half) and j < len(right_half):
            if left_half[i] < right_half[j]:
                arr[k] = left_half[i]
                i += 1
            else:
                arr[k] = right_half[j]
                j += 1
            k += 1

        while i < len(left_half):
            arr[k] = left_half[i]
            i += 1
            k += 1

        while j < len(right_half):
            arr[k] = right_half[j]
            j += 1
            k += 1

arr = [12, 11, 13, 5, 6, 7]
merge_sort(arr)
print("排序后的数组:", arr)

运行上述程序,输出结果为:排序后的数组:[5, 6, 7, 11, 12, 13]

在这个例子中,我们首先将数组分为两半,然后递归地对每一半进行归并排序。接着,我们将两个已排序的子数组合并成一个有序数组。

归并排序的时间复杂度为 O(n log n),在最坏、平均和最好情况下都保持这个性能,这使得它在处理大数据集时非常有效。

今天的代码大赏就到这里。希望通过这篇文章,你能够对归并排序算法有一个更深入的理解。

如果大家还想看更多的不同语言实现不同的算法,欢迎在评论区留下自己的评论。

完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!

在线访问:https://www.codecopy.cn/post/yq85h0

在代码小抄可以看到更多优质代码,也欢迎大家积极分享,可能会获得我们官方的小礼品 🎁~

往期推荐

我成功复刻了安卓 6 的彩蛋!

今日代码大赏 | Java 实现快速排序算法

今日代码大赏 | Java 使用递归反转句子

今日代码大赏 | Java 实现字符串转为日期

今日代码大赏 | Java 实现冒泡排序

原文作者:程序员鱼皮;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2023-12-20

  • 博文量
    330
  • 访问量
    151715