QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 845|回复: 0
打印 上一主题 下一主题

Python实现归并排序

[复制链接]
字体大小: 正常 放大

1175

主题

4

听众

2848

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 10:54 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
下面是使用Python实现归并排序的示例代码:

```python
def merge_sort(arr):
    # 递归终止条件:当数组长度小于等于 1 时,直接返回该数组
    if len(arr) <= 1:
        return arr

    # 将数组平分为两个子数组
    mid = len(arr) // 2
    left = arr[:mid]
    right = arr[mid:]

    # 递归地对子数组进行归并排序
    left = merge_sort(left)
    right = merge_sort(right)

    # 合并两个已排序的子数组
    return merge(left, right)

def merge(left, right):
    merged = []
    i, j = 0, 0

    # 比较两个子数组的元素,将较小的元素依次放入 merged 数组中
    while i < len(left) and j < len(right):
        if left[i] <= right[j]:
            merged.append(left[i])
            i += 1
        else:
            merged.append(right[j])
            j += 1

    # 将剩余的元素依次放入 merged 数组中
    while i < len(left):
        merged.append(left[i])
        i += 1
    while j < len(right):
        merged.append(right[j])
        j += 1

    return merged

# 测试代码
arr = [5, 2, 8, 11, 3, 9, 6]
sorted_arr = merge_sort(arr)
print(sorted_arr)
```

在上面的代码中,`merge_sort` 函数实现了归并排序的逻辑,使用递归的方式将数组划分为子数组并进行排序,然后再将排序好的子数组进行合并。`merge` 函数实现了合并两个已排序的子数组的逻辑,依次将较小的元素放入新的数组中。最后,我们通过调用 `merge_sort` 函数并传入待排序的数组进行测试,打印排序后的结果。运行代码后,输出的结果即为归并排序后的数组。


zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2025-8-3 12:22 , Processed in 0.433198 second(s), 50 queries .

回顶部