python算法(五)归并排序

news/2024/5/17 18:13:34 标签: python, 算法, 归并排序

python_0">python算法(五)归并排序

归并排序

问题:将一组乱序排列的数列,按从小到大(从大到小)的顺序重新排序.
解决问题的逻辑:
归并排序的逻辑是:
在这里插入图片描述

代码实现

python">from random import shuffle
"""归并排序"""
# 将一列无序的数按从小到大的顺序进行排列
def merge_sort(num_lsit1:list,num_list2:list):
    i = j = 0
    result = []
    while 1:
        # 如果第一个列表的元素全部加入结果,将第二个列表的元素全部加入结果,排序结束
        if i == len(num_lsit1):
            result.extend(num_list2[j:])
            return result
        # 如果第二个列表的元素全部加入结果,将第一个列表的元素全部加入结果,排序结束
        elif j == len(num_list2):
            result.extend(num_lsit1[i:])
            return result
        # 比对当前要比较的两个元素,将较小的加入结果,并将相应的索引往后移一位
        if num_lsit1[i] < num_list2[j]:
            result.append(num_lsit1[i])
            i += 1
        else:
            result.append(num_list2[j])
            j += 1
def merge(num_list):
    if len(num_list) == 1:
        return num_list
    left = merge(num_list[:len(num_list)//2])
    right = merge(num_list[len(num_list)//2:])
    return merge_sort(left, right)

num_list_demo1 = [x for x in range(100)]
shuffle(num_list_demo1)
print("排序前:", num_list_demo1)
print("排序后:", merge(num_list_demo1))


http://www.niftyadmin.cn/n/1653896.html

相关文章

mybatis-spring最新版下载地址

mybatis-spring最新版下载地址&#xff1a; http://mvnrepository.com/artifact/org.mybatis/mybatis-spring/1.2.3 mybatis-spring最新版下载地址&#xff1a; http://mvnrepository.com/artifact/org.mybatis/mybatis转载于:https://www.cnblogs.com/next-open/p/4978881.htm…

搭建完整的前端工程框架

1.基础 &#xff08;1&#xff09;模式&#xff1a;nodeJSangularJS&#xff08;实现页面跳转&#xff0c;视图路由&#xff09;bootstrap&#xff08;html、css、js共同作用下的框架&#xff09;express&#xff08;用于写逻辑路由&#xff09; &#xff08;2&#xff09;软件…

python算法(六)希尔排序

python算法(六)希尔排序 希称排序 问题: 将一组乱序的数列,按从小到大(从大到小)的顺序重新排列. 方法: 设定一个初始增量, 对原始数列进行分组:对每一个分组进行排序设置一个更小的增量对第一轮排序后的数列再按增量重新分组对每一个分组进行排序以此,直到增量为1, 再排序结…

进击的Objective-C--------------Objective-C(二)

1实例变量的可见度:public// public 关键字 表明实例变量是公有的 类外 可以访问 类内 也可以访问// 类外:指的就是该类的.h和.m 之外// public 关键字是使用的最少的 因为它破坏了封装的特性NSString *_name;protected// protected 关键字 表明实例变量是受保护的,类外不可以访…

python算法(七)堆排序

python算法(七)堆排序 堆 如上图, 一个堆应该满足所有的子节点都 不大于(不小于)父节点. 当子节点不大于父节点的时候,称为大顶堆 当子节点不小于父节点的时候,称为小顶堆 堆是一个概念上的名词,在实际的程序中,堆是以列表的形式存在的. 因此,如上的堆对应的列表是60 40 32 20…

20135304刘世鹏——信息安全系统设计基础第十一周总结

第八章 异常控制流 异常 异常是控制流中的突变&#xff0c;用来响应处理器状态中的某些变化。 异常处理 异常号&#xff1a;一些是有处理器的设计者分配&#xff08;包括被零除、缺页、存储器访问违例、断电及算数溢出&#xff09;其他由操作系统内核的设计者分配&#xff08;包…

Codeforces Round #114 (Div. 1) A. Wizards and Trolleybuses 物理题

A. Wizards and Trolleybuses Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/167/problem/A Description In some country live wizards. They love to ride trolleybuses. A city in this country has a trolleybus depot with n trolleyb…

python 算法(8) 两数和问题

python 算法(8) 两数和问题 问题 问题来自leecode: 问题描述: 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同…