数组
数组最大的问题在于
- 每次扩容需要先开辟一块新数组
- 把旧数组的内容,一个个复制到新数组
- 再把旧引用,指向新数组的地址
- 速度慢-需要copy
- 浪费内存
- 数据删除的时候,被删位置后的数据,需要一个个向前平移
- 如果只是从一个集合中取,同时集合的长度是固定的,可以用Array
- 一旦牵扯到扩容和删除,array会超级麻烦
- 数组是一种线性连续型的存储结构,元素类型相同
- 数组的优点是存储速度较快
链表
- 离散存储的线性结构
- 链表中的元素内存上不必相连
- 元素彼此通过指针相连,每个节点只有一个前驱节点(除了首节点),每个节点也有一个后续节点(除了尾节点)
- # 二叉树
- 与链表类似,二叉树也存储了其子节点的指针。但二叉树存储的是左孩子与右孩子的地址。
- 通常的时候,二叉树存储都是有序的。左孩子节点小于父节点,右孩子节点大于父节点
- 由于二叉树特殊的存储方式,因此在查找数据的时候,用二叉树会特别方便(相较于链表)。。。整体逻辑类似于二分查找。