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

    python归并排序的基本思路

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

    基本思路

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

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

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

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

    实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    # 归并排序

    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学习网