插入算法的实现思路

假设我们要在第3个位置(i=3)上插入某一个数,顺序表初始化为P=(1,2,3,4,5,6)。我们可以根据下面的图示理解整个算法过程。

需要注意的是,插入位置i是表示第几个位置而不是数组的索引位置,也就是说i-1才是数组的索引位置。

代码实现

for(int i=location-1;i< s.length;i++)
{ temp = s.elem[i]; s.elem[i] = b; b = temp;
}
s.elem[s.length] = b;
s.length++;

顺序表插入算法时间复杂度

最好情况下的时间复杂度

我们可以考虑,假如说我们将元素插入顺序表最后一个元素后面,元素需要移动几次呢?很明显,这种情况下,前面的元素并不需要移动。那么在这种情况下,时间复杂度就为O(1)。

最坏情况下的时间复杂度

当我们将新元素插入到第一个元素之前呢?很明显,这时候我们需要将所有元素向后移动。那么在这种情况下,时间复杂度为O(n)。

出题思路

考察顺序表的基本概念


B。本题可以使用基本公式,LOC(ai) = LOC(a1) + (i-1) * l,其中i代表第几个元素,l代表每个元素的长度,LOC(a1)为第一个元素的存储地址。

B。参考顺序表插入算法时间复杂度这部分的讲解,使用公式n/2计算即可。

A。首先顺序表底层使用数组实现,那么顺序表的有点主要就是存取方便。插入和删除时,因为要移动大量元素,所以效率很低,其实是顺序表的缺点。顺序表是一种存储结构,而不是逻辑结构。

C。线性表是具有n个相同特性数据元素的有限序列。

有关顺序表的使用场景


A。根据我们之前的分析,顺序表插入算法的时间复杂度是O(n),但是如果在最后一个元素后面插入新元素,时间复杂度为O(1),同时删除和插入分析思路类似,当删除最后一个元素时,时间复杂度为O(1),使用顺序表存取元素时间复杂度也是O(1)。

平均查找长度相关


假设有一个线性表为P=(1,2,3,4,5),我们根据P对平均查找长度进行分析。
首先我们假设查找每一个元素都是等概率的,因此pi = 1/n。而对于顺序表,我们查找第一个元素需要1次,查找第n个元素就需要n次。故Ci = i。
根据给出的公式,我们带入后可对平均查找长度进行计算。

顺序表插入算法的时间复杂度以及顺序表常考问题相关推荐

  1. 在顺序表中第五个位置插入一个元素9,实现顺序表插入的基本操作,输出顺序表中所有元素

    题目 在顺序表中第五个位置插入一个元素9,实现顺序表插入的基本操作,输出顺序表中所有元素 #include<iostream>using namespace std; #define OK ...

  2. mysql添加数据不阻塞_主键表插入数据不提交,外键表插入数据被阻塞

    有客户和我说:他在含主外键的表中实验发现,在主表数据未提交,然后在外键表插入该数据数据时,出现外键表hang住现象.我开始以为是不同的会话,根据oracle数据库的一致性原则,应该新会话在外键表中不能 ...

  3. mysql 分表插入_如何解决MySQL分表与新数据的插入

    抱歉我忽视了用户名如今已经不是单一的登陆查询和用户识别的依据了. 现在这个时代,登录的依据如此庞杂(手机.邮箱.用户名.各种第三方认证),并且一个人往往有多个登录入口,总不可能把每个人的数据重复存储多 ...

  4. java实现两张表的数据同步,java实现mysql数据库从一张表插入数据到另一张表

    包 cn.gtmc.schedule.app; 导入 cn.gtmc.schedule.domain.Employee; import java.sql. * ; 导入 java.util.Array ...

  5. java 复制mysql某张表_java实现mysql数据库从一张表插入数据到另一张表

    packagecn.gtmc.schedule.app;importcn.gtmc.schedule.domain.Employee;import java.sql.*;importjava.util ...

  6. 【算法设计与分析】经典常考三十三道例题AC代码

    ❥小虾目前大三,我校在大一下开设<数据结构>这门课,大二上开了<算法设计与分析>这门课,很庆幸这两门课的上机考试总成绩一门100,一门99,最后总分也都90+.下文会给出机试的 ...

  7. 关于主外键关系主表子表插入 或者更新

    主外键关系表主表子表插入或者更新问题 对于多表的整体跟新数据,并且各个表之间有主外键关联 表UserA为主表,主键为id; 表UserB为主表,主键为Bid,外键为id: 表UserC为主表,主键为C ...

  8. 前端笔试常考设计模式,操作系统,数据结构,ACM模板,经典算法,正则表达式,常用方法

    考试时允许使用草稿纸,请提前准备纸笔.考试过程中允许上厕所等短暂离开,但请控制离开时间 笔试得分60%一般通过,面试答对80%才能通过 合集:2023年最全前端面试题考点HTML5+CSS3+JS+V ...

  9. 最新算法校招编程-剑指offer、Leetcode常考题目及解法分享

    本资源整理了BAT.TMD等互联网算法岗校招面试过程中常考的LeetCode和剑指offer编程题:此外,还整理了部分百度.腾讯.阿里.今日头条相关的面试经验,对于正准备校招面试的同学非常值得参考复习 ...

最新文章

  1. elk系列7之通过grok分析apache日志
  2. 组数总和—leetcode39
  3. git 操作二进制文件
  4. Python数模笔记-PuLP库(1)线性规划入门
  5. 经纬度(度分秒)坐标转换为小数格式(weixin公众号【图说GIS】)
  6. CMake 之 BUILD_SHARED_LIBS 和 CMAKE_BUILD_TYPE 用法教程
  7. 巧用 import.meta 实现热更新
  8. sql语句中count(*),count(1),count(id)区别详解
  9. uniapp showToast
  10. Sentieon软件应用之浅层测序分析
  11. 人人视频显示服务器睡着了,人人视频显示连接超时
  12. Mac 设置 xdebug + Sublime 方法整理
  13. 均方误差损失函数(MSE,mean squared error)
  14. 不会英语可以学计算机编程吗,不会英语的人应该怎么学编程
  15. 广度优先搜索(BFS)及其matlab代码
  16. 关于计算机应用英语作文,计算机应用与办公自动化专业英文简历模板
  17. android 解锁图案,Android开发中的图案解锁
  18. C# webbrowser 使用Tips
  19. 模仿搜索框搜索提示案例笔记分享
  20. 计算机性能和显卡的提升,除了CPU和显卡,这个东西也能提升你电脑性能

热门文章

  1. SuperMap三维专题之3dsMax数据——对接篇
  2. python文件处理pdf_Python用于NLP :处理文本和PDF文件
  3. Python numpy nonzero 取矩阵中非零元素的下标
  4. 中期国际量化:安卓手机如何下载mt4及MT4一些功能介绍
  5. [连接 Android ]-使用 adb 命令行通过数据线进入安卓手机系统
  6. centos7加载磁盘
  7. 快速排序详细分析--单向扫描和双向扫描
  8. 微信小程序获取手机号,前端解密手机号,微信sessionKey过期,微信手机号授权
  9. 玩个游戏好难 Win10我的世界(Minecraft)下载
  10. 如何选择合适的无线网桥