数据结构
1、线性表
(数组)存储区间是连续的,占用内存严重,故空间复杂度很大。但数组的二分查找(前提是必须有序)时间复杂度小,为O(1);
数组的特点是:
- 寻址容易(arr[n]=arr[0]+n*每个元素的长度,时间复杂度为O(1))
- 插入和删除困难(可能会引发一半以上的数据元素移动,时间复杂度为O(n));
- Java中的数组是定长的,如果需要变长则需要自行编程实现
2、链表
存储区间离散(数据不是连续存放的),占用内存比较宽松,故空间复杂度很小,但操作元素的时间复杂度很大,达O(N)。
链表的特点是:
- 寻址困难(可能需要通过遍历的方式查找元素,时间复杂度为O(n))
- 插入和删除容易(不需要引发元素的移动,仅仅只是进行地址的拷贝,时间复杂度为O(1))。