Python归并排序

归并排序是一种分治算法,它将数组分成两半,分别对这两半进行排序,然后将排序后的两半合并在一起。归并排序是一种稳定的排序算法,时间复杂度为O(n log n),其中n是数组中元素的数量。

以下是Python实现归并排序的一个例子:

python 复制代码
def merge_sort(arr):
    if len(arr) > 1:
        mid = len(arr) // 2  # 找到中间索引
        L = arr[:mid]  # 左半部分
        R = arr[mid:]  # 右半部分

        merge_sort(L)  # 递归地排序左半部分
        merge_sort(R)  # 递归地排序右半部分

        # 合并两个有序数组
        i = j = k = 0

        # 复制数据到临时数组L[]
        while i < len(L) and j < len(R):
            if L[i] < R[j]:
                arr[k] = L[i]
                i += 1
            else:
                arr[k] = R[j]
                j += 1
            k += 1

        # 复制左半部分剩余的数据
        while i < len(L):
            arr[k] = L[i]
            i += 1
            k += 1

        # 复制右半部分剩余的数据
        while j < len(R):
            arr[k] = R[j]
            j += 1
            k += 1

# 测试代码
arr = [12, 11, 13, 5, 6, 7]
print("未排序的数组:", arr)
merge_sort(arr)
print("排序后的数组:", arr)

这个例子中,merge_sort函数首先找到数组的中间索引,然后将数组分为两部分,递归地对这两部分进行排序。最后,使用一个循环将排序后的两个数组合并为一个有序数组。

相关推荐
鶴哥只手遮天8 小时前
Spring Framework 7.0.9 深度剖析-06-Bean 生命周期与依赖注入原理
java·后端·开源
zwd20058 小时前
Manim 画布尺寸与像素换算详解:frame_width、frame_height、pixel_width 和画质参数(0.21.0 实测)
python·分辨率·manim·数学动画·frame_width·manim教程
唐钰小宝B8 小时前
深度解读 JDK 8、JDK 11、JDK 17 和 JDK 21 的区别
java·开发语言·windows
golang学习记8 小时前
最新版VS Code开发Spring Boot项目保姆级教程
java·spring boot·vscode·后端
最强小杰8 小时前
Claude Opus 4.8 调用报 529 怎么办?并发限制触发过载——退避策略与降级方案完整指南
运维·网络·python·ai
databook8 小时前
MinMax vs Standard vs Robust:三种特征缩放怎么选
python·机器学习·数据分析
在世修行8 小时前
智学文枢:实体模型层
python·orm·sqlalchemy
叶总没有会8 小时前
RabbitMQ基础--java客户端
java·rabbitmq·java-rabbitmq
张张123y9 小时前
# 后端第七课:FastAPI 实战入门(用刚学的 Python 写第一个 API 接口)
开发语言·python·mysql·api·fastapi