zoukankan      html  css  js  c++  java
  • 2019.9.24-归并排序(代码)

    # coding:utf-8

    def merge_sort(alist):
    """歸幷排序"""
    n = len(alist)
    if n <= 1:
    return alist
    mid = n//2

    # left 採用歸幷排序後形成的有序的新的列表
    left_li = merge_sort(alist[:mid])

    # right 採用歸幷排序後形成的有序的新的列表
    right_li = merge_sort(alist[mid:])

    # 將兩個有序的子序列合並爲一個新的整體
    # merge(left, right)
    left_pointer, right_pointer = 0, 0
    result = []

    while left_pointer < len(left_li) and right_pointer < len(right_li):
    if left_li[left_pointer] <= right_li[right_pointer]:
    result.append(left_li[left_pointer])
    left_pointer += 1
    else:
    result.append(right_li[right_pointer])
    right_pointer += 1

    result += left_li[left_pointer:]
    result += right_li[right_pointer:]
    return result


    if __name__ == "__main__":
    li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    print(li)
    sorted_li = merge_sort(li)
    print(li)
    print(sorted_li)

     

    执行结果

  • 相关阅读:
    权限认证机制
    在线工具统计
    Redis内存模型
    Redis数据结构
    开发工具清单
    MySql数据库优化、备份和恢复
    MySql 性能优化神器 Explain
    ASP.NET Core 3.1 迁移到 NET 5.0
    MySql Sql语句
    DTU的通讯工作模式有哪些
  • 原文地址:https://www.cnblogs.com/lishuide/p/11581249.html
Copyright © 2011-2022 走看看