当前位置: 首页 > news >正文

线性表中的时间复杂度

线性表

一、顺序表示的线性表

  1. 插入操作的时间复杂度
    • 最好情况: O ( 1 ) O(1) O(1)。(新元素插到表尾,不需要移动元素)
    • 最坏情况: O ( n ) O(n) O(n)。(新元素插到表头,需要将原有的n个元素全部向后移动)
    • 平均情况: O ( n ) O(n) O(n)。(假设新元素插到每个位置的概率相同 ( p = 1 n + 1 ) (p=\frac{1}{n+1}) (p=n+11),则平均循环次数为 n p + ( n − 1 ) p + . . . + 1 p = n ( n + 1 ) 2 1 n + 1 = n 2 np+(n-1)p+...+1p=\frac{n(n+1)}{2}\frac{1}{n+1}=\frac{n}{2} np+(n1)p+...+1p=2n(n+1)n+11=2n
  2. 删除操作
    • 最好情况: O ( 1 ) O(1) O(1)。(删除表尾元素,不需要移动其他元素)
    • 最坏情况: O ( n ) O(n) O(n)。(删除表头元素,需要将后序的n-1个元素全部向前移动)
    • 平均情况: O ( n ) O(n) O(n)。(假设删除任何一个元素的概率相同 ( p = 1 n ) (p=\frac{1}{n}) (p=n1),则平均循环次数为 ( n − 1 ) p + ( n − 2 ) p + . . . + 1 p = n ( n − 1 ) 2 1 n = n − 1 2 (n-1)p+(n-2)p+...+1p=\frac{n(n-1)}{2}\frac{1}{n}=\frac{n-1}{2} (n1)p+(n2)p+...+1p=2n(n1)n1=2n1
  3. 按位查找: O ( 1 ) O(1) O(1)(由于顺序表各个数据元素在内存中连续存放,因此可以根据起始地址和数据元素大小立即找到第i个元素–“随机存取”特性)
  4. 按值查找:
    • 最好情况: O ( 1 ) O(1) O(1)。(目标元素在表头)
    • 最坏情况: O ( n ) O(n) O(n)。(目标元素在表尾)
    • 平均情况: O ( n ) O(n) O(n)。(假设目标元素出现在任何一个位置的概率相同 ( p = 1 n ) (p=\frac{1}{n}) (p=n1),则平均循环次数为 1 p + 2 p + . . . + n p = n ( n + 1 ) 2 1 n = n + 1 2 1p+2p+...+np=\frac{n(n+1)}{2}\frac{1}{n}=\frac{n+1}{2} 1p+2p+...+np=2n(n+1)n1=2n+1

二、链式表示的线性表

单链表

  1. 插入:
    • 按位序插入
      • 最好情况: O ( 1 ) O(1) O(1)(插在表头)
      • 最坏情况: O ( n ) O(n) O(n)(插在表尾)
      • 平均情况: O ( n ) O(n) O(n)
    • 指定节点的后插操作: O ( 1 ) O(1) O(1)
    • 指定节点的前插操作:
      • O ( n ) O(n) O(n)(循环查找指定节点p的前驱q,再对q后插)
      • O ( 1 ) O(1) O(1)(若在p节点前插入s,则先将s插到p后面,再交换p和s的数据域)
  2. 删除:
    • 按位序删除
      • 最好情况: O ( 1 ) O(1) O(1)
      • 最坏、平均情况: O ( n ) O(n) O(n)
    • 指定节点的删除: O ( 1 ) O(1) O(1)
  3. 查找
    • 按位查找:平均情况 O ( n ) O(n) O(n)
    • 按值查找:平均情况 O ( n ) O(n) O(n)
  4. 求表长: O ( n ) O(n) O(n)
  5. 单链表的建立
    • 头插法:(插入n个节点的时间复杂度为) O ( n ) O(n) O(n)
    • 尾插法:
      • 若不带表尾指针,则每次插入都从头遍历,时间复杂度为 O ( n 2 ) O(n^2) O(n2)
      • 若设置一个表尾指针,则为 O ( n ) O(n) O(n)

双链表

与单链表一样,双链表不可随机存取,按位查找、按值查找都只能用遍历的方式实现,时间复杂度 O ( n ) O(n) O(n)

循环链表

  1. 从尾部找到头部,时间复杂度是 O ( 1 ) O(1) O(1);从头节点找到尾部,时间复杂度是 O ( n ) O(n) O(n)

一、顺序存储实现的栈

基本操作(创建、增、删、查)都是 O ( 1 ) O(1) O(1)的时间复杂度
对于栈的销毁,在函数运行结束后由系统自动回收内存

相关文章:

线性表中的时间复杂度

线性表 一、顺序表示的线性表 插入操作的时间复杂度 最好情况: O ( 1 ) O(1) O(1)。(新元素插到表尾,不需要移动元素)最坏情况: O ( n ) O(n) O(n)。(新元素插到表头,需要将原有的n个元素全部…...

ensp与虚拟机搭建测试环境

1.虚拟机配置 ①首先确定VMnet8 IP地址,若要修改IP地址,保证在启动Ensp前操作 ②尽量保证NAT模式 2.ensp配置 (1)拓扑结构 (2)Cloud配置 ①首先点击 绑定信息 UDP → 增加 ②然后点击 绑定信息 VMware ... → 增加 ③最后在 端口映射设置上点击双向通…...

linux内核中的 指针 和 unsigned long

文章目录 1.指针的来源2.指针的定义:3.字长和数据类型4.Linux内核为什么常用unsigned long来替代指针?参考资料 1.指针的来源 方便引用一个内存地址。 给定一个内存地址,CPU就可以取出该地址的数据。 给定一个内存地址,CPU就可以…...

STM32--GPIO

文章目录 GPIO简介GPIO的基本结构GPIO位结构GPIO模式LED和蜂鸣器LED闪烁工程及程序原码代码: 蜂鸣器工程和程序原码代码 传感器光敏传感器控制蜂鸣器工程代码 GPIO简介 GPIO(General Purpose Input Output)是通用输入/输出口的简称。它是一种…...

剑指 Offer ! 61. 扑克牌中的顺子

参考资料:力扣K神的讲解 剑指 Offer 61. 扑克牌中的顺子 简单 351 相关企业 从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12&…...

《玩转Python数据分析专栏》大纲

欢迎来到《玩转Python数据分析分类专栏》!在这个专栏中,我们将带您深入探索数据分析的世界,以Python为工具,解析各个领域的实际应用场景。通过100篇教程,我们将逐步引领您从入门级到高级,从基础知识到实战技巧,助您成为一名优秀的数据分析师。 专栏目标 本专栏旨在帮助…...

Zabbix自动注册服务器及部署代理服务器

文章目录 一.zabbix自动注册1.什么是自动注册2.环境准备3.zabbix客户端配置4.在 Web 页面配置自动注册5.验证自动注册 二.部署 zabbix 代理服务器1.分布式监控的作用:2.环境部署3.代理服务器配置4.客户端配置5.web页面配置5.1 删除原来配置5.2 添加代理5.3 创建主机…...

SpringBoot下使用自定义监听事件

事件机制是Spring的一个功能,目前我们使用了SpringBoot框架,所以记录下事件机制在SpringBoot框架下的使用,同时实现异步处理。事件机制其实就是使用了观察者模式(发布-订阅模式)。 Spring的事件机制经过如下流程: 1、自定义事件…...

并发编程面试题1

并发编程面试题1 一、原子性高频问题: 1.1 Java中如何实现线程安全? 多线程操作共享数据出现的问题。 锁: 悲观锁:synchronized,lock乐观锁:CAS 可以根据业务情况,选择ThreadLocal,让每个…...

【对于一维信号的匹配】对一个一维(时间)信号y使用自定义基B执行匹配追踪(MP)研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

【Oracle 数据库 SQL 语句 】积累1

Oracle 数据库 SQL 语句 1、分组之后再合计2、显示不为空的值 1、分组之后再合计 关键字: grouping sets ((分组字段1,分组字段2),()) select sylbdm ,count(sylbmc) a…...

Django中级指南:理解并实现Django的模型和数据库迁移

Django 是一个极其强大的 Python Web 框架,它提供了许多工具和特性,能够帮助我们更快速、更便捷地构建 Web 应用。在本文中,我们将会关注 Django 中的模型(Models)和数据库迁移(Database Migrations&#x…...

Chatgpt API调用报错:openai.error.RateLimitError

Chatgpt API 调用报错: openai.error.RateLimitError: You exceeded your current quota, please check your plan and billing details. 调用OpenAI API接口 import openai import osopenai.api_key os.getenv("OPENAI_API_KEY")result openai.Chat…...

一键获取数百张免费商用人脸!AI人脸生成器来袭

随着科技的发展,人工智能正在渗透到生活的各个角落,设计行业也不例外。在网页、APP、PPT 等界面设计中,设计师经常需要插入真实的人脸素材,以增强作品的真实感和场景化。但是获取素材既不容易,质量和价格也难免成为设计…...

跳跃游戏 II——力扣45

文章目录 题目描述解法一 贪心题目描述 解法一 贪心 int jump(vector<int>& nums){in...

Stable Diffusion - 常用的负向提示 Embeddings 解析与 坐姿 (Sitting) 提示词

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132145248 负向 Embeddings 是用于提高 StableDiffusion 生成图像质量的技术&#xff0c;可以避免生成一些不符合预期的图像特征&#xff0c;比如…...

工厂方法模式(一):C#实现指南

工厂方法模式是一种创建型设计模式&#xff0c;用于处理对象的创建问题。通过使用工厂方法模式&#xff0c;我们可以将对象的创建过程与使用过程分离&#xff0c;从而增加代码的灵活性和可维护性。 工厂方法模式的定义 工厂方法模式定义了一个创建对象的接口&#xff0c;但由子…...

Spring接口InitializingBean的作用和使用介绍

在Spring框架中&#xff0c;InitializingBean接口是一个回调接口&#xff0c;用于在Spring容器实例化Bean并设置Bean的属性之后&#xff0c;执行一些自定义的初始化逻辑。实现InitializingBean接口的Bean可以在初始化阶段进行一些必要的操作&#xff0c;比如数据的初始化、资源…...

Excel---成绩相同者,名次并列排列,三步搞定

需求&#xff1a;一张成绩表&#xff0c;共341行(340条数据&#xff0c;第一条为标题)&#xff0c;根据成绩进行排序&#xff0c;成绩相同进行名次并列 一、选择生成结果的位置&#xff0c;我这里点击了一下E2单元格 二、公式—>插入–>rank函数 数值&#xff1a;D2 表示…...

Elasticsearch6.x和7.x的区别

Elasticsearch6.x和7.x的区别 1、查找方面的区别 在增删改方面&#xff0c;6.x和7.x是一样的&#xff0c;在查找方面&#xff08;分为普通查找和有高亮的查找&#xff09;&#xff0c;6.x和7.x有区别。 在7.x的es中&#xff1a; org.springframework.data.elasticsearch.cor…...

如何用3个步骤轻松下载B站视频:BBDown_GUI完全指南

如何用3个步骤轻松下载B站视频&#xff1a;BBDown_GUI完全指南 【免费下载链接】BBDown_GUI BBDown的图形化版本 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown_GUI 还在为复杂的命令行工具而烦恼吗&#xff1f;BBDown_GUI让你告别代码恐惧&#xff0c;用最简单的…...

3分钟零门槛安装:Axure RP中文语言包全面解析

3分钟零门槛安装&#xff1a;Axure RP中文语言包全面解析 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界…...

Mathematica三维绘图实战:从基础函数到复杂曲面

1. Mathematica三维绘图初体验 第一次打开Mathematica时&#xff0c;你可能被它简洁的界面迷惑了——这个看似普通的软件&#xff0c;其实藏着惊人的三维绘图能力。记得我刚开始用Mathematica画三维图时&#xff0c;连最基本的Plot3D函数都用不利索&#xff0c;但现在回头看&am…...

企业级文档翻译离线部署终极指南:BabelDOC本地化实战深度解析

企业级文档翻译离线部署终极指南&#xff1a;BabelDOC本地化实战深度解析 【免费下载链接】BabelDOC Yet Another Document Translator 项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC 在当今全球化业务环境中&#xff0c;企业面临着海量技术文档、研究报告…...

Pixel Fashion Atelier惊艳效果展示:512x768竖版高精度皮装图集

Pixel Fashion Atelier惊艳效果展示&#xff1a;512x768竖版高精度皮装图集 1. 像素艺术与时尚的完美融合 Pixel Fashion Atelier&#xff08;像素时装锻造坊&#xff09;将复古游戏美学与现代时尚设计相结合&#xff0c;创造出了独特的视觉体验。这款基于Stable Diffusion与…...

SDD基于规范编程-OpenSpec及SuperPowers狙

智能体时代的代码范式转移与 C# 的战略转型 传统的 C# 开发模式&#xff0c;即所谓的“工程导向型”开发&#xff0c;要求开发者创建一个复杂的项目结构&#xff0c;包括项目文件&#xff08;.csproj&#xff09;、解决方案文件&#xff08;.sln&#xff09;、属性设置以及依赖…...

Claude读论文系列(七)

SkillSieve 精读笔记 论文标题&#xff1a; SkillSieve: A Hierarchical Triage Framework for Detecting Malicious AI Agent Skills arXiv&#xff1a; 2604.06550 | 2026-04-09 作者&#xff1a; Yinghan Hou&#xff08;Imperial College London&#xff09; Zongyou Yang…...

C99_C11中的复合字面量(Compound Literals)

文章目录探索C99/C11中的复合字面量&#xff08;Compound Literals&#xff09;✨什么是复合字面量&#xff1f;&#x1f914;基本语法为什么需要复合字面量&#xff1f;&#x1f3af;复合字面量的类型与应用&#x1f4a1;1. 数组复合字面量2. 结构体复合字面量3. 联合体复合字…...

Youtu-Parsing保姆级部署指南:WebUI界面详解与常见问题解决

Youtu-Parsing保姆级部署指南&#xff1a;WebUI界面详解与常见问题解决 1. 项目简介与核心能力 Youtu-Parsing是腾讯优图实验室推出的专业文档解析模型&#xff0c;基于Youtu-LLM-2B构建&#xff0c;能够智能识别文档中的多种元素并进行结构化输出。这个模型特别适合需要处理…...

【教学类-160-02】20260409 AI视频培训-练习2“豆包AI视频《小班-抢玩具》+豆包图片风格:手办”

背景需求&#xff1a; 【教学类-160-01】20260408 AI视频培训-练习1“豆包AI视频”https://mp.csdn.net/mp_blog/creation/editor/159965108 不是前面孩子的衣服了&#xff0c;从两女变成一男一女了 详细的人物特征描述&#xff08;衣服颜色等&#xff09;控制人物尽量相似。 …...