目录
一、线性结构
元素一个接着一个排列
1.1 线性表,
线性表常采用顺序存储跟链式存储,主要的基本操作是插入、删除和查找
定义:线性表是n(n>=0)个元素的有限序列,非空线性表的特点如下:
(1) 存在唯一一个称作 “第一个” 的元素
(2) 存在唯一一个称作 “最后一个” 的元素
(3) 除第一个元素外,每一个元素有且仅有一个直接前驱(前面有一个元素)
(4) 除最后一个元素外,每一个元素有且仅有一个直接后继(后面跟着一个元素)
只有一个元素,就既是第一个元素,又是最后一个,那么没有前驱后继
1.2线性表的存储结构
线性表的存储结构分为顺序存储跟链式存储
顺序存储:按照顺序存储,一组地址连续的存储单元,所以两个元素逻辑上相邻,物理上也相邻,比较有代表性的就是数组,优点是可以随机访问表中元素,如直接通过数组的下表访问;缺点是插入和删除操作需要移动元素,比如1234,删除一个是134不能空一个位置变1 34,插入同理
还有期望值分别为:
多背多分。
1.3 顺序表插入的时间复杂度
时间复杂度一般是看循环,不循环一般就O(1)对吧,这里for循环是将元素往后移。
最好的情况:比如数组有n=7个元素,i是下标,那么我在末尾插入,那么最后一个就是i=7 < k=8 for循环就不运行啦,那么我们的一个时间复杂度就是O(1)
最坏的情况:在我们的第一个元素之前插入,那么有7个元素,就得移动7次,有n个移动n次,时间复杂度就是O(n)
中间插入:时间复杂度也是O(n)
1.4、顺序表删除的时间复杂度
最好的情况:删除最后一个元素,没有元素移动,for循环就不用执行,时间复杂度是O(1)
最坏的情况: 删除表头第一个元素,那么就得移动n-1个元素,时间复杂度是O(n)
删除中间: 时间复杂度O(n)
1.4 顺序表查找跟时间复杂度
顺序表可以随机访问表中元素,什么意思?就是我想访问谁就访问谁,我想去谁家去谁家,那么这里的时间复杂度就是只需要直接查找就可以查找到,无论你查哪个位置的元素,时间复杂度都是O(1)