树形结构
图形结构
排序
线性结构
1.线性结构
2>数据逻辑上有连续性,物理存储也有连续性 顺序表
1>数据逻辑上有连续性,物理存储不一定连续 链表
顺序表:增/删/查/改
访问第n个元素的时候,时间复杂度为o(1)、
写代码:1.需从后往前遍历,否则数据会被覆盖
2.红色:数据下标,a原来所在位置
2.蓝色 、 数据下标,a原来所在位置
扩容:
-
扩容的条件
在插入之前,size==array.length;
-
如何扩容
申请容量(1.5-2倍)
所有插入均需考虑扩容问题
时间复杂度:
头插|头删|中间插入|中间删除 0(n)
尾插 平均 0(1)当需要扩容时为0(n)
尾删 0(1)
总结:
1.属性初始化
普通初始化
-
定义初始化
-
构造代码块中初始化
-
构造方法初始化
构造每一个对象时
静态属性 1.定义时初始化 2.静态代码初始化
2.复杂度 衡量算法好坏的标准
-
时间复杂度
-
空间复杂度
计算数据规模N和执行基本指令的个数f(n)的关系
大O渐进表示法 1.保留最高次项 2.系数为1
常见复杂度:
O(1) O(log(n)) O(N) O(n*log(n))