• 技术文章 >Python技术 >Python基础教程

    python归并排序的基本思路

    小妮浅浅小妮浅浅2021-08-11 09:52:53原创2186

    基本思路

    归纳排序是采用分治法的非常典型的应用。

    1、先归还分解组,然后合并组。基本构想是将数组分解到最小,然后合并两个有序数组。

    2、基本构想是比较两个数组的最前面的数量,谁小就先取谁,取后取相应的指针后移。

    然后进行比较,直到一个组是空的,最后复制另一个组的剩馀部分即可。

    实例

    # 归并排序
    def merge_sort(alist):
        '''归并排序'''
        n = len(alist)
        if n <= 1:
            return alist
        else:
            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__':
        alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
        print(alist)
        sorted_alist = merge_sort(alist)
        print(sorted_alist)

    以上就是python归并排序的基本思路,希望对大家有所帮助。更多Python学习指路:python基础教程

    本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

    专题推荐:python归并排序
    上一篇:python异常是什么?如何解决? 下一篇:python快速排序的运作过程

    相关文章推荐

    • Python中SKlearn是什么• SKlearn如何在python安装?• python打开文件的两种方式• python按行读取文件的方法比较• python不同大小文件的复制方法• Python解释器有哪几种• python可变数据类型和不可变数据类型的区别• python引用计数机制的使用• python中异步非阻塞如何实现• python实例方法中self的作用• python变量中self的添加• python从键盘输入若干个整数• python中slice的三个参数• python列表有几种切片形式• python如何获取列表的长度• python列表缓存的探究

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网