数组:
优点:
1. 数组的主要优点是根据下标值访问效率会很高
2.但是如果希望根据元素来查找对应的位置?
3.比较好的方法是先对数组排序,再进行二分查找
缺点:
需要先对数组排序,生成有序数组,才能提高查找效率
数组在插入和删除数据时,需要有大量的位移操作(插入中间或者首部时),效率很低
链表:
优点:
1.链表的插入和删除操作效率都很高
缺点:
查找效率低,需要从头依次查找链表的每一项
即使插入和删除效率高,但是如果插入和删除中间位置,还是要重头找到对应的数据
哈希表:
优点: 插入/查询/删除效率非常高
缺点:
1.空间利用率不高,底层使用的是数组,并且使用的某些单元是没有被利用的
2.哈希表中的元素是无序的,不能按照固定的顺序来遍历哈希表中的元素
3.不能快速的找出哈希表中的最大值或者最小值
树结构:
在某种场景下,使用树结构会更加方便
因为树结构是非线性,可以表示一对多
比如文件的目录结构
对于一个平衡树的插入和查找等效率为O(logN) 平衡树: 树两边的数据均匀分布 非平衡树: 树两边的数据不均匀分布
连续插入有序的数据,树分布不均匀,变成一个链表结构,插入和查找等效率变成 O(N)