zoukankan      html  css  js  c++  java
  • MergeSort 归并排序

     
    # MergeSort 归并排序_Python实现
     
     
    # 归并排序需要两个函数.
    # 1. 归并的逻辑
    # 2. 归并的两种调用
     
    # 归并逻辑
    def merge(left, right):
        result = []
     
        while len(left) > 0 and len(right) > 0:
            if left[0] <= right[0]:
                result.append(left.pop(0))
            else:
                result.append(right.pop(0))
        result += left  # 当某一个列表空了的时候才会执行列表之间扩展
        result += right
        return result
    
    # 列表切割以及调用
    def merge_sort(li):
        num = len(li) // 2
        if num < 1:
            return li
        # 根据现在列表长度, 将列表分成两个部分
        left = merge_sort(li[:num])  # 左侧的列表, 递归调用分割方法一直分下去.直到left为一个元素为止
        right = merge_sort(li[num:])  # 右侧的列表, 递归调用分割方法一直分下去. 知道right为一个元素为止
        # 当列表分割到只有一个元素的时候, 递归调用的时候就会函数的if入口拦截, 返回这个只包含了一个元素的列表
        #  这个时候才执行下面merge函数, 进行排序.
        return merge(left, right)
    
    
     
    
    list = [1, 55, 98984, 65, 165, 356, 54, 3, 645, 74, 64, 35] li = merge_sort(list) print(li)
    

      

    归并排序:

    归并排序在实现的思路上和快排很相似. 不过实现的过程使用了两个函数.  因为没有用到迭代, 其实可以融合成一个函数, 不过相对来说两个函数的可读性更好一些

  • 相关阅读:
    Neo4j
    linux系统中如何建立与删除软连接(方便快捷使用,大量节约时间)
    eclipse/myeclipse 中,如何删除已经下载过的插件(举例:删除scala ide)
    dayday up
    元类
    sort和sorted
    反射
    继承派生
    property
    python3.5和3.6区别
  • 原文地址:https://www.cnblogs.com/jrri/p/12099937.html
Copyright © 2011-2022 走看看