数据结构(七)——线性表的基本操作

news/2024/6/17 10:25:00 标签: 数据结构

🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉

在csdn获奖荣誉: 🏆csdn城市之星2名
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓csdn2023年后端赛道第第七
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓csdn2023年长沙赛道第一
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓csdn2023年大二赛道第二
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓Java全栈群星计划top前5
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🤗 端午大礼包获得者
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🥰阿里云专家博主
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 😉亚马逊DyamoDB结营
获得国家荣誉3项省级荣誉7项以及多项校院级

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊

文章目录

  • 数据结构(八)——线性表的基本操作
    • 操作中常用的预定义常量与类型
      • 初始化(分配空间;赋初值)
      • 销毁线性表
      • 线性表置空/清空线性表
      • 求表长
      • 判断线性表是否为空
    • 查找算法的算法分析
    • 插入算法
      • 插入算法的算法分析
      • 删除操作
        • 删除算法分析
    • 线性表的小结;
    • 线性表的优缺点
      • 优点
      • 缺点

数据结构(八)——线性表的基本操作

操作中常用的预定义常量与类型

img

初始化(分配空间;赋初值)

img

销毁线性表

img

线性表置空/清空线性表

img

求表长

img

判断线性表是否为空

img

线性表的按值查找算法(这里我们先说最简单的顺序查找,后面就详细讲解)

img

img

查找算法的算法分析

查找算法的基本操作:将记录的关键字同给定值进行比较(L.elem==e)

img

比较的次数与输入的定值e有关(假设7个数字出现的概率均为1/7)

当e=a,1次;当e=b,2次;当e=c,3次;…e=g,7次

平均比较次数(1+2+3+…+7)/7=4

在查找时,为确定元素在顺序表中的位置,需和给定值进行比较的数据元素个数的期望值称为查找算法在查找成功时的平均查找长度(AverageSearch Length, ASL)

img

从顺序表查找的过程可见,C取决于所查元素在表中的位置。例如,查找表中第一个记录时,仅需比较一次;而査找表中最后一个记录时,则需比较n次。一般情况下C等于i。假设每个元素的查找概率相等,即

image-20230917095612708

可简化为

image-20230917095635879

由此可见,顺序表按值查找算法的平均时间复杂度为O(n)。

插入算法

img

在这里插入图片描述

插入位置在最后在线性表的最后添加一个元素不需要移动直接添加
插入位置在最前在原线性表的第1个元素之前插入一个新的元素,线性表的所有元素都要移动移动次数最多
插入位置中间如上例

img

插入算法的算法分析

img

删除操作

img

①判断删除位置i是否合法(合法值为1≤i≤n)
②将欲删除的元素保留在e当中
③将第i+l个至第n个的元素依次向前移动一个位置(i= n时无需移动)
④表长减1

img

删除算法分析

img

线性表的小结;

查找、插入、删除的平均算法复杂度为O(n)

空间复杂度显然顺序表操作没有占用辅助空间算法的空间复杂度O(1)

线性表的优缺点

优点

存储密度大(结点本身所占用的空间/结点结构所占存储量=1)无需为表示表中元素之间的逻辑关系,而增加额外的存储空间

可以随机存取表中任意位置的元素

缺点

插入、删除某一元素需移动大量元素

当线性表长度变化较大时,难以确定存储空间的容量,数据元素的个数不能自由扩充(存储空间不灵活)


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

相关文章

windows mysql 安装教程

1.下载mysql安装包 地址 2.解压并创建my.ini配置文件 my.ini内容: [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 ---这里输入你安装的文件路径---- basedirG:\mysql\mysql-8.0.28-winx64\mysql-8.0.28-winx64 # 设置mysql数据库的数据的存放目录 data…

GlusterFS性能调优

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 相关文章: 分布式存储——GlusterFS 关于GlusterFS的卷 GlusterFS—新手陷阱 GlusterFS常用命令集 GlusterFS系…

工业网关、物联网网关与PLC网关是什么?

网关是什么? 网关是一种用于连接不同网络的网络设备,其作用是实现网络之间的通信和数据交换。它负责将一个网络的数据转发到另一个网络,并且可以进行路由、转换和过滤等处理。通常用于连接局域网和广域网之间,可以是硬件设备或者软…

常见排序算法解析

芝兰生于深林,不以无人而不芳;君子修道立德,不为穷困而改节 文章目录 插入排序直接插入排序希尔排序 选择排序直接选择排序堆排序 交换排序冒泡排序快速排序优化挖坑法前后指针法非递归版 归并排序递归非递归 总结 插入排序 插入排序&#…

【vue】ant-design弹出框无法关闭和runtimecore提示isFucntion is not function的问题修复

【vue】ant-design弹出框无法关闭和runtimecore提示isFucntion is not function的问题修复,初步分析是vue发布3.4版本以后引起的兼容性问题。 问题截图: 1.isFucntion is not function,是由于vue升级后众多插件版本不匹配造成的问题 2.弹框…

零基础如何系统自学Python

零基础系统自学Python 学习前的准备 明确学习目标 Python 一共有两大版本,即 Python2 以及 Python3,Python2 已停止维护,强烈建议直接上手 Python3。Python 可以说是无所不能,主要有以下几大方向,建议选择自己感兴趣…

NineData云原生智能数据管理平台新功能发布|2024年2月版

SQL开发:全功能支持百度云 GaiaDB 介绍:支持通过 SQL 开发所有能力管理 GaiaDB 实例。更多信息,请参见:真香!NineData SQL 开发全面适配 GaiaDB 场景:企业使用 GaiaDB 管理企业数据,需要一个一…

uniapp模仿下拉框实现文字联想功能 - uniapp输入联想(官方样式-附源码)

一、效果 废话不多说&#xff0c;上效果图&#xff1a; 在下方的&#xff1a; 在上方的&#xff1a; 二、源码 一般是个输入框&#xff0c;输入关键词&#xff0c;下拉一个搜索列表。 ElementUI有提供<el-autocomplete>&#xff0c;但uniapp官网没提供这么细&#x…