【零基础】学python数据结构与算法笔记5

news2024/9/23 23:26:50

文章目录

  • 前言
  • 30.归并排序归并
  • 31.归并排序实现
  • 32.归并排序时间复杂度讨论
  • 33.NB三人组小结
  • 总结


前言

学习python数据结构与算法,学习常用的算法,
b站学习链接

30.归并排序归并

在这里插入图片描述
将两个箭头指向两个列表的首个元素,比较,哪个大就把它取下来,箭头往后走,最后遇到左边剩下7,8,9,右边没数了,就把7,8,9全取下来。
在这里插入图片描述
最后就能实现一段有序的列表。

将第一个元素的位置定义为low,第一个列表的末尾位置定义为mid,最后一个位置定义为high。
在这里插入图片描述
在这里插入图片描述

31.归并排序实现

分解:将列表越分越小,直至分成一个元素。
终止条件:一个元素是有序的。
合并:将两个有序列表归并,列表越来越大。
在这里插入图片描述
先分解,一个元素肯定有序,最后两个两个合并。
在这里插入图片描述
测试一下,将归并换成打印,发现,函数将会一直递归,直到元素只有一个时,终止,所以打印的都是两个元素的列表,将左边一部分一半一半分解,再从最小的列表一步一步打印回来。证明递归写的没错。
在这里插入图片描述

32.归并排序时间复杂度讨论

一次归并的复杂度为O(n),因为要遍历一遍,而一共要遍历多少层呢,
一共遍历logn层,所以时间复杂度为O(nlogn)
而空间复杂度为O(n),因为要重新开一个列表。
在这里插入图片描述
python的sort方法是基于归并排序的。

33.NB三人组小结

三种排序算法的时间复杂度都是O(nlogn)
一般情况下,就运行时间而言:
快速排序<归并排序<堆排序,因为时间复杂度中的常数不一样所以造成了时间不一样
三种排序算法缺点:
快速排序:极端情况下排序效率低
归并排序:需要额外的内存开销
堆排序:在快的排序算法中相对较慢

同样10000个数排序
在这里插入图片描述

在这里插入图片描述

快速排序要递归需要空间,因为每次需要存上一个元素的位置,平均是logn层,最坏是O(n)。

稳定性:相同的两个数据,相对位置不变。
3 2 1 2 4 如果对这个列表排序,有两个2,第一个2 排完序仍然在前面的位置吗,说明稳定。

假如字典{“name”:“a”,“age”:18}
{“name”:“b”,“age”:20}
{“name”:“a”,“age”:25}
稳定的按name排序,应该是
{“name”:“a”,“age”:18}
{“name”:“a”,“age”:25}
{“name”:“b”,“age”:20}
一句话:有顺序的挨个换的,都是稳定的,飞着换的都是不稳定的。
冒泡法挨个换,稳定
选择排序最小的和前面的换。2 3 2 1 4,1和最前面的2互换,不稳定
插入排序,拿一张牌,挨个比,稳定
快速排序,左边比,右边比,飞着换,不稳定
堆排序,儿子找爸爸,不是挨个一起的,飞着换,不稳定
归并排序,挨着的,稳定。

python内置的是基于归并排序,稳定c++是基于快速排序的。

总结

将归并排序讲完,并做总结。

文章目录

  • 前言
  • 30.归并排序归并
  • 31.归并排序实现
  • 32.归并排序时间复杂度讨论
  • 33.NB三人组小结
  • 总结


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/137765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java IO流 - 字符流的使用详细介绍

文章目录字符流的使用文件字符输入流创建字符输入流字符输入流读取文件字符输出流创建字符输出流字符输出流写入字符流的使用 字节流读取中文输出会存在什么问题&#xff1f; 会乱码。或者内存溢出。 读取中文输出&#xff0c;哪个流更合适&#xff0c;为什么&#xff1f; 字符…

MAX78000训练自己的神经网络模型

参考&#xff1a; The MAX78000 Microcontroller, Some Coffee, and Artificial Intelligence GitHub - MaximIntegratedAI/ai8x-training: Model Training for ADIs MAX78000 and MAX78002 AI Devices ai8x-synthesis/WSL2.md at develop MaximIntegratedAI/ai8x-synthesi…

移动金融管理系统设计与开发实训(课程设计报告)——基于Android+Django的银行系统部分功能设计与实现

阅读过程中若有不解和需要可私信&#xff0c;乐于解答 项目代码文档都保存着 基于AndroidDjango的银行系统部分功能开发与设计 摘要&#xff1a; 随着信息技术的快速发展以及经济的快速发展&#xff0c;金融界的信息化的进程也在不断推进&#xff0c;信息技术的不断成熟和人…

JavaWeb:EL表达式JSTL标签

1&#xff0c;EL表达式 1.1 概述 EL&#xff08;全称Expression Language&#xff09;表达式语言&#xff0c;用于简化JSP页面内的Java代码。 EL表达式的主要作用是 获取数据 。其实就是从域对象中获取数据&#xff0c;然后将数据展示在页面上。 而EL表达式的语法也比较简单…

HR软件七步帮助企业管理员工

对于中小企业&#xff08;SMB&#xff09;来说&#xff0c;员工就意味着一切。你的员工几乎掌握着企业的整体增长和发展&#xff0c;他们可以成就企业&#xff0c;但也能破坏企业的发展。为了提高员工效率&#xff0c;中小型企业需要出色的人力资源管理。员工只有在受到重视和培…

【Linux】Linux环境变量的理解

加油布鲁斯&#xff0c;你能行的&#xff01; 文章目录一、环境变量PATH中的系统默认搜索路径1.将程序安装到/usr/bin目录&#xff08;不带./运行自己写的程序&#xff09;2.将程序路径添加到PATH环境变量里面&#xff08;不带./运行自己写的程序&#xff09;二、环境变量的深…

PyTorch基础部分——毕设进行时

为了完成毕设准备开始学习PyTorch&#xff0c;第一步到蓝桥云课搜索实验项目&#xff0c;找到了“PyTorch入门与实战&#xff08;第二版&#xff09;”&#xff0c;开始边实验边学习&#xff08;本身有了一点点点点的相关基础了&#xff09;学习传送门&#xff1a;PyTorch基础入…

SQL WHERE 子句

WHERE 子句用于过滤记录。 SQL WHERE 子句 WHERE 子句用于提取那些满足指定条件的记录。 SQL WHERE 语法 SELECT column1, column2, ... FROM table_name WHERE condition; 参数说明&#xff1a; column1, column2, ...&#xff1a;要选择的字段名称&#xff0c;可以为多个…

06SpringCloudAlibaba负载均衡服务调用-OpenFeign

目录 SpringCloud Feign 查看此博客&#xff1a;005SpringCloud--Feign&#xff1a;负载均衡(基于服务端)_gh_xiaohe的博客-CSDN博客 OpenFegin概述 OpenFeign是什么&#xff1a; OpenFegin能干什么 Feign和OpenFeign两者区别 OpenFeign使用步骤 服务消费者 接口注解 微…

TP相关知识

说明 该文章来源于徒弟lu2ker转载至此处&#xff0c;更多文章可参考&#xff1a;https://github.com/lu2ker/ 文章目录说明PHP中有一些内置类PHP反序列化问题绕过姿势&#xff1a;魔术方法&#xff08;反序列化如何利用&#xff09;CMS可能存在的部分逻辑问题$_REQUEST相关安全…

小游戏引擎选型参考指南

写在前面 前面写了几期有关于小游戏的文章&#xff0c;主要从小游戏开发、小游戏运营、小游戏变现等多个角度进行了较为粗略的介绍&#xff0c;很多同学表示对小游戏引擎部分很感兴趣&#xff0c;希望能够有一些更为深入的分析介绍。今天就对目前主流的小游戏引擎进行探讨。 …

Java 并发编程 (二)CountDownLatch和CyclicBarrier的使用

CountDownLatch和CyclicBarrier CountDownLatch 功能介绍 CountDownLatch 是一个同步功能的辅助类 线程计数不为0时呈wait状态如果为0则继续执行。通过await 和 countDown 两个方法来实现等待和继续运行。 作用&#xff1a;一个线程或多个线程等待另一个线程或多个线程完成后…

2003-2021年高铁列车信息

2003-2021年高铁列车信息 1、时间&#xff1a;2003-2021年 2、指标&#xff1a; 列车车次、出发站、出发站所属地级市、出发站所属省份、出发站类型、到达站、到达站所属地级市、到达站所属省份、到达站类型、车型、开车时间、到站时间、运行时间、里程 3、指标说明&#x…

58. 微调(fine-tuning)

前面的一些章节介绍了如何在只有6万张图像的Fashion-MNIST训练数据集上训练模型。 我们还描述了学术界当下使用最广泛的大规模图像数据集ImageNet&#xff0c;它有超过1000万的图像和1000类的物体。 然而&#xff0c;我们平常接触到的数据集的规模通常在这两者之间。 假如我们…

3、基于注解的IoC装配与依赖注入

一、XML开启注解支持 1、添加context名称空间 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context&…

03SpringCloudAlibaba服务注册中心—Zookeeper

目录 注册中心Zookeeper 五步曲&#xff1a; zookeeper服务提供者 1、03-cloud-provider-payment-zookeeper-8004 2、pom.xml 3、改yum 4、主启动 5、业务类 测试1&#xff1a; 测试2&#xff1a; ​ 服务节点是临时节点还是持久节点 粗划分&#xff1a; 细划分&am…

南京晓庄Java期末知识点复习

南京晓庄Java期末知识点复习第一章 Java 语言概述第二章 Java 语法基础标识符基本数据类型**运算符****语句**数组和字符串命令行参数输入输出第三章 类五个基本概念类类的封装类的继承**抽象类**接口关键字常用的工具类第四章 Applet及其应用**Java程序的两种基本形式****Appl…

红队渗透靶场之prime1.0(超详细!)

靶场考察知识 Wordpress WordPress是一个免费的开源内容管理系统&#xff08;CMS&#xff09;&#xff0c;可以用来创建和管理网站或博客。它是由PHP语言和MySQL数据库构建的&#xff0c;并且拥有大量的插件和主题&#xff0c;可以让您轻松地自定义网站的外观和功能 Wpscan扫…

引用量超6000的语义分割经典论文DeepLabv3解读

分享语义分割领域的一篇经典论文DeepLabv3&#xff0c;由谷歌发表于CVPR2017。开源代码地址&#xff1a; Tensorflow版本&#xff1a;https://github.com/tensorflow/models/tree/master/research/deeplabPytorch版本&#xff1a;https://github.com/open-mmlab/mmsegmentatio…

【Spring 入门教程3】

Spring_day03 &#x1f308;博客主页&#xff1a;屠一乐的博客 &#x1f4c5; 发文时间&#xff1a;2023.1.3 &#x1f388; 一定存在只有你才能做成的事 &#x1f339; 博主水平有限&#xff0c;如有错误&#xff0c;欢迎指正 欢迎各位&#x1f44d;收藏&#x1f48e;评论✉ …