专栏名称: 程序员鱼皮
鹅厂全栈开发,持续分享编程技法和实用项目
目录
相关文章推荐
91运营网  ·  91运营网vip会员早鸟票抢座ing!! ·  昨天  
91运营网  ·  Deepseek爆款指南! ·  昨天  
运营研究社  ·  《运营总监实战手册3.0》包邮送,真香 ·  昨天  
91运营网  ·  91运营网vip会员早鸟票抢座ing!! ·  2 天前  
51好读  ›  专栏  ›  程序员鱼皮

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

程序员鱼皮  · 公众号  ·  · 2024-04-14 18:31

正文

前两天我们分享了 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]                 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 = [121113567]
merge_sort(arr)
print("排序后的数组:", arr)

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

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

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

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

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

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

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

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

往期推荐

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

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







请到「今天看啥」查看全文