插入排序、选择排序、冒泡排序小结(45)

news2024/9/28 9:30:39

小朋友们好,大朋友们好!

我是猫妹,一名爱上Python编程的小学生。

和猫妹学Python,一起趣味学编程。

今日主题

插入排序、选择排序、冒泡排序有什么区别?

原理不同

插入排序是将未排序的元素逐个插入到已排序序列中的合适位置;

选择排序是在已排序序列中找到最小(大)元素,将其放到已排序序列的末尾;

冒泡排序是通过不断比较相邻元素并交换位置来实现排序。

时间复杂度不同

插入排序的时间复杂度为O(n^2),最坏情况下为O(n^2);选

择排序和冒泡排序的时间复杂度均为O(n^2),但在最好情况下都可以达到O(n)。

空间复杂度不同

插入排序的空间复杂度为O(1),只需要常数级别的额外空间;

选择排序和冒泡排序的空间复杂度也为O(1),因为它们都不需要使用额外的空间。

实现难度不同

插入排序相对简单,易于理解和实现;

选择排序也相对简单,但需要额外的存储空间;

冒泡排序的实现较为困难,容易出现超时或溢出的情况。

各自优缺点

插入排序的优点是算法简单,稳定性好,适用于部分已经排好序的数据集;缺点是时间复杂度较高,不适用于大规模数据的排序。

选择排序的优点是时间复杂度较低,适用于小规模数据的排序;缺点是稳定性差,不如插入排序稳定。

冒泡排序的优点是稳定性好,算法简单,适用于大规模数据的排序;缺点是时间复杂度较高,不适用于对实时性要求较高的场景。

 举个例子

请将[1,2,3,4,5]从小到大排列。

插入排序

插入排序把数组分为已排序区和未排序区。

取未排序区的元素,在已排序区上找到一个正确的位置插上去。

选择排序

选择排序也会把数组分为已排序区和未排序区。

但是与插入排序不同的是,它每次找到未排序区的最小值,与未排序区的首个元素交换,这样就变成了已排序区的末尾元素了。

冒泡排序

对于一个数比较与之相邻的数字,例如要把一个数列按从小到大的顺序排列,就拿左边第一个数,和第二的比,若小于第二个数两个交换,否则不换,再比较第二个和第三个,按照同样的规则,继续第三第四…直到最后。这样就算一次冒泡,每次冒泡都会有一个数被放到了最终的位置。

就如下图中这样,图中的下边的数就是我所说的左边的数。

附上一段代码:

 

好了,我们今天就学到这里吧!

如果遇到什么问题,咱们多多交流,共同解决。

我是猫妹,咱们下次见!

文章中的图出自:极客时间上王争课程 —— 数据结构与算法之美

 

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

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

相关文章

王道考研——计算机网络1.1计算机网络概述

文章目录 0.认识计算机网络1. 计算机网络体系结构1.1概念及功能计算机网络的概念计算机网络的功能计算机网络的发展总结 1.2组成与分类计算机网络的组成计算机网络的分类总结 1.3标准化工作及相关组织(408大纲已删)标准化工作标准化工作的相关组织总结 1…

总结856

学习目标: 月目标:5月(张宇强化前10讲,背诵15篇短文,熟词僻义300词基础词) 周目标:张宇强化前3讲并完成相应的习题并记录,英语背3篇文章并回诵 每日必复习(5分钟&#…

chatgpt赋能Python-python3怎么降到2

Python3如何降级到Python2 Python3是Python语言的最新版本,但是一些旧的项目或者库可能只支持Python2,这就需要将Python3降级到Python2。本文将介绍如何在MacOS和Windows系统上进行Python3到Python2的降级,并提供详细的步骤和注意事项。 Ma…

chatgpt赋能Python-python3自定义排序

Python3自定义排序 在Python3中,可以使用内置的sorted()函数或list.sort()方法对列表进行排序。这些方法通常基于默认排序规则,即按照元素的字符串表示进行排序。不过,有时候我们需要按照自己定义的规则对列表进行排序。这就需要使用自定义排…

Windows免安装MySQL8.0

Windows免安装MySQL8.0 Windows 上的 MySQL 分为安装版和免安装版。 本文介绍如何在 Windows 上配置免安装版的 MySQL 8.0。 1、下载并安装 VC_redist.x64.exe Windows 版的 MySQL 8.0 依赖 Microsoft Visual C 2019 Redistributable Package(VC_redist.x64.exe…

【c++ • STL】初步认识什么是 STL 标准库

🚀 个人简介:CSDN「博客新星」TOP 10 , C/C 领域新星创作者💟 作 者:锡兰_CC ❣️📝 专 栏:从零开始的 c 之旅🌈 若有帮助,还请关注➕点赞➕收藏,不行的…

html网页制作(一)基础

之前做web的时候发现,有些页面的源代码,我都不能,完全看懂,所以就像学习一下 一.html是什么? HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格…

深入浅出JWT

什么是JWT? JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWT token,并且这个JWT token带有签名信息,接收后可以校验是否被篡改,所以可以用于在各方之间安全地将信息作为Js…

chatgpt赋能Python-python3__2

Python3 中的位运算符 在 Python3 中&#xff0c;位运算符是用来执行二进制位操作的操作符。这些操作符允许我们对二进制位进行一些有用的操作&#xff0c;如位移、按位与、按位或、按位取反等。 在本文中&#xff0c;我们将介绍 Python3 中的位运算符 <<&#xff0c;也…

查看电脑的BIOS版本的五种方法

查看主板BIOS版本的五种方法 概述1. 在 BIOS 中查看2. 使用 DirectX 诊断工具3. 使用 CPU-Z 中查看4. 在 CMD 中查看&#xff08;一&#xff09;5. 在 CMD 中查看 &#xff08;二&#xff09;结束语 概述 BIOS是 Basic Input Output System 的缩略词&#xff0c;直译就是 **基…

Packet Tracer – VLAN 实施故障排除场景 2

Packet Tracer – VLAN 实施故障排除场景 2 拓扑图 地址分配表 设备 接口 IPv4 地址 子网掩码 默认网关 S1 VLAN 56 192.168.56.11 255.255.255.0 不适用 S2 VLAN 56 192.168.56.12 255.255.255.0 不适用 S3 VLAN 56 192.168.56.13 255.255.255.0 不适用 P…

chatgpt赋能Python-python3调用摄像头

Python3调用摄像头&#xff1a;介绍和实践 Python3 是一种高级编程语言&#xff0c;具有易学易用、支持多种编程方式和跨平台的优点&#xff0c;成为了科学计算、数据分析和人工智能等领域的常用语言。本篇文章将介绍如何使用Python3调用摄像头&#xff0c;并提供实践代码供读…

计算机网络 - 应用层

Application Layer Network Application 的架构 client-server 最常见的架构, 比如上淘宝, google drive都是客户端-服务器的架构 P2P 很多下载软件用的是这个架构, 比如BitTorrent Web and HTTP Overview 是一个超文本传输的协议, 客户端请求, 服务器响应, 发送对象的We…

【野火启明_瑞萨RA6M5】按键输入检测

文章目录 一、GPIO输入——按键输入检测二、硬件设计三、软件设计下载验证 一、GPIO输入——按键输入检测 按键检测原理 按键机械触点断开、闭合时&#xff0c;由于触点的弹性作用&#xff0c;按键开关不会马上稳定接通或一下子断开&#xff0c;使用按键时会产生 下图中的带波…

城市内涝的原因是什么?城市内涝监测预警系统有什么作用?

城市内涝是指在城市地区发生的、由于降雨或其他水源无法迅速排出而引起的洪水现象&#xff0c;城市内涝是城市发展过程中面临的重要挑战之一。本文着重为大家介绍城市内涝的原因&#xff0c;以及城市内涝监测预警系统的作用。 一、城市内涝的原因是什么? 1、排水系统不完善&am…

【基础6】存储过程的 创建与调用

目录 什么是存储过程 用户自定义存储过程 练习 什么是存储过程 什么是存储过程 类似于C语言中的函数。用来执行管理任务或应用复杂的业务规则存储过程可以带参数&#xff0c;也可以返回结果存储过程可以包含数据操纵等语句、变量、逻辑控制语句等。&#xff08;单个select语…

QT窗体绘图QPainter

QPainter INSCODE AI 创作助手&#xff1a; QPainter是Qt中的一个类&#xff0c;用于在窗口、图像或其他用户界面上绘制图形和文本。它提供了一些方便的方法来画线、矩形、圆、多边形和文本 QPainter绘图函数 INSCODE AI 创作助手&#xff1a; QPainter是Qt中一个用于绘图的类&…

MATLAB开发中的常见问题和解决方法:如何解决常见的性能和bug问题

章节一&#xff1a;引言 在MATLAB开发中&#xff0c;经常会遇到一些常见的性能和bug问题。这些问题可能导致程序运行缓慢、结果不准确或者甚至崩溃。本文将介绍一些常见问题&#xff0c;并提供解决方法和案例&#xff0c;帮助开发者更好地应对这些挑战。 章节二&#xff1a;性…

chatgpt赋能Python-python3多行输入

Python3多行输入教程&#xff1a;如何让你的输入更加高效 Python3是一种功能强大、易于学习的编程语言&#xff0c;被广泛应用于科学计算和数据分析领域。但是&#xff0c;对于初学者来说&#xff0c;输入数据可能是一个有些棘手的问题。在本文中&#xff0c;我们将介绍如何使…

chatgpt赋能Python-python3拷贝文件

Python3 拷贝文件方法及注意事项 拷贝文件在日常开发中是一项基本的操作。Python3作为一门既简洁又强大的编程语言&#xff0c;也提供了丰富的文件操作函数。在本篇文章中&#xff0c;我们将介绍如何使用Python3拷贝文件以及需要注意的细节。 为什么要拷贝文件&#xff1f; …