• python实现排序算法二:归并排序


    ##归并排序

    ##基本思想:对于两个排好序的数组A和B,逐一比较A和B的元素,将较小值放入数组C中,当A或者B数组元素查询完后,将A或者B剩余的元素直接添加到C数组中,此时C数组即为有序数组,这就是归并排序原理

    ##step1:对于一个无序数组A,可以取A元素中间索引,将A数组分为两个部分A1,A2;

    ##step2:递归A1,A2,分别将A1,A2分为A11,A12和A21,A22两部分直至只有一个元素;

    ##step3:对于只有一个元素的数组来讲,其是有序的,因此,对于两个只有一个元素的数组,可以根据基本思想所述合成一个数组C,最后得到有序数组

    代码如下:

    ##归并排序
    def merge(left, right):
    	l = 0
    	r = 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
    
    def mergesort(array):
    	if len(array) <= 1:
    		return array
    	num = int(len(array)/2)
    	left = mergesort(array[:num])
    	right = mergesort(array[num:])
    	return merge(left, right)
    
    if __name__ == '__main__':
    	b = [1, 22, 90, 4, 65, 3, 73, 8]
    	print(b)
    	a = mergesort(b)
    	print(a)
    

      

  • 相关阅读:
    Python容器篇 4 -- 字典
    Python容器篇 3 -- 元组
    Python容器篇 2 -- 列表
    Python容器篇 1 -- 字符串
    Python中的关键字
    SQLI-LABS靶场环境搭建详细流程
    Qt QLineEdit 改变text内容的大小
    linux下QT连接mysql找不到驱动
    apt(rpm) Mysql安装
    const 成员函数
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8024474.html
Copyright © 2020-2023  润新知