zoukankan      html  css  js  c++  java
  • Python实现归并排序

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/3/18 14:26
    # @Author  : baoshan
    # @Site    : 
    # @File    : mergeSort.py
    # @Software: PyCharm Community Edition
    
    
    def MergeSort(lists):
        if len(lists) <= 1:
            return lists
        num = int(len(lists) / 2)
        left = MergeSort(lists[:num])
        right = MergeSort(lists[num:])
        return Merge(left, right)
    
    
    def Merge(left, right):
        l, r = 0, 0
        result = []
        while l < len(left) and r < len(right):
            if left[l] < right[r]:
                result.append(left[l])
                l += 1
            else:
                result.append(right[r])
                r += 1
        result += left[l:]
        result += right[r:]
        return result
    
    
    print(MergeSort([1, 2, 3, 4, 5, 6, 7, 90, 21, 23, 45]))

    输出结果:

    /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/baoshan/PycharmProjects/myProject/python_weixin_study/mergeSort.py
    [1, 2, 3, 4, 5, 6, 7, 21, 23, 45, 90]
    
    Process finished with exit code 0
  • 相关阅读:
    [Redis]在.NET平台下的具体应用
    [Redis]在Windows下的下载及安装
    【重读MSDN之ADO.NET】ADO.NET连接
    贪心
    树状数组
    并查集
    模拟
    kruskal
    树链剖分
    匈牙利算法
  • 原文地址:https://www.cnblogs.com/zhzhang/p/8595400.html
Copyright © 2011-2022 走看看