数据结构基础1

news/2025/2/4 14:06:10 标签: 数据结构, 排序算法, 算法

什么是稳定排序和不稳定排序

稳定排序和不稳定排序是算法>排序算法的两种分类。
稳定算法>排序算法保证在排序过程中,相同元素的相对位置不变。
不稳定算法>排序算法则不保证在排序过程中,相同元素的相对位置不变。
常见的稳定算法>排序算法包括: 冒泡排序 快速排序
常见的不稳定算法>排序算法包括: 选择排序 堆排序

二叉树前、中、后序遍历的规则

前序遍历:先访问根结点、再前序遍历左子树、最后前序遍历右子树;
中序遍历:中序遍历左子树、访问根节点、中序遍历右子树;
后续遍历:后序遍历左子树、后序遍历右子树、访问根结点;

队列和栈的区别

1.规则不同
队列:先进先出
栈:先进后出

2.对插入和删除的限定不同
队列:只能在表的一段进行插入,并在另一端进行删除
栈:只能在表的一端插入和删除

3.遍历数据速度不同
队列:基于地址指针进行遍历,可以从头或者尾部进行遍历,不能同时遍历,无需开辟新空间,在遍历过程中不影响数据结构,所以遍历速度快。
栈:只能从栈顶取数据,如果要取出栈底的数据,需要遍历整个栈,并且需要遍历的同时开辟空间,保持遍历前的一致性。

冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序的时间复杂度

  1. 冒泡排序(Bubble Sort):

    • 平均时间复杂度:O(n^2)
    • 最坏情况时间复杂度:O(n^2)
  2. 插入排序(Insertion Sort):

    • 平均时间复杂度:O(n^2)
    • 最坏情况时间复杂度:O(n^2)
  3. 选择排序(Selection Sort):

    • 平均时间复杂度:O(n^2)
    • 最坏情况时间复杂度:O(n^2)
  4. 希尔排序(Shell Sort):

    • 平均时间复杂度:取决于增量序列的选择,一般为O(n^1.3)
    • 最坏情况时间复杂度:取决于增量序列的选择,一般为O(n^2)
  5. 归并排序(Merge Sort):

    • 平均时间复杂度:O(nlogn)
    • 最坏情况时间复杂度:O(nlogn)
  6. 快速排序(Quick Sort):

    • 平均时间复杂度:O(nlogn)
    • 最坏情况时间复杂度:O(n^2)
  7. 堆排序(Heap Sort):

    • 平均时间复杂度:O(nlogn)
    • 最坏情况时间复杂度:O(nlogn)

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

相关文章

python的pre-commit库的使用

在软件开发过程中,保持代码的一致性和高质量是非常重要的。pre-commit 是一个强大的工具,它可以帮助我们在提交代码到版本控制系统(如 Git)之前自动运行一系列的代码检查和格式化操作。通过这种方式,我们可以确保每次提…

[STM32 标准库]EXTI应用场景 功能框图 寄存器

一、EXTI 外部中断在嵌入式系统中有广泛的应用场景,如按钮开关控制,传感器触发,通信接口中断等。其原理都差不多,STM32会对外部中断引脚的边沿进行检测,若检测到相应的边沿会触发中断,在中断中做出相应的处…

SpringBoot源码解析(九):Bean定义接口体系

SpringBoot源码系列文章 SpringBoot源码解析(一):SpringApplication构造方法 SpringBoot源码解析(二):引导上下文DefaultBootstrapContext SpringBoot源码解析(三):启动开始阶段 SpringBoot源码解析(四):解析应用参数args Sp…

sslscan:快速 SSL/TLS 扫描器!全参数详细教程!Kali Linux教程!黑客渗透教程!

简介 sslscan 查询 SSL/TLS 服务(如 HTTPS)并报告协议版本、密码套件、密钥交换、签名算法和正在使用的证书。这有助于用户从安全角度了解哪些参数较弱。 SSLSCAN还可以将结果输出到XML文件中,以便于外部程序。 安装 源码安装 通过以下…

MQTT知识

MQTT协议 MQTT 是一种基于发布/订阅模式的轻量级消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用而设计,可以用极少的代码为联网设备提供实时可靠的消息服务。MQTT 协议广泛应用于物联网、移动互联网、智能硬件、车联网、智慧城市、远程医疗、…

opencv图像处理框架

一.课程简介与环境配置 二.图像基本操作 (1)计算机眼中的视觉 1)计算机眼中图像是由一块块组成,每一块又由很多很多个像素点组成,一个像素点的值是在0到255之间,值越大就越亮。 2)RGB表示彩色图像的三个颜色通道(红绿蓝),一张…

PythonStyle MVC 开发框架

在 Python 中,MVC(Model - View - Controller,模型 - 视图 - 控制器)是一种常见的软件设计模式,它将应用程序分为三个主要部分,各自承担不同的职责,以提高代码的可维护性、可扩展性和可测试性。…

8、面向对象:类、封装、构造方法

一、类 1、定义 类:对现实世界中事物的抽象。Student 对象:现实世界中具体的个体。张三、李四 这些具体的学生 面向对象的特征:抽象、封装、继承、多态 OOP: Object Oriented Programming(面向对象编程) 类和对象…