有序数组:
- 添加数据:
查找插入位置用二分查找是O(log2n)。但是数组的插入操作为了保证有序性需要将插入位置后的元素全部后移一位,这需要O(n)。所以总的时间复杂度是O(n)。( O(log2n)+O(n)=O(n) )
- 删除数据:
使用二分查找找到删除位置,再把删除位置后的所有元素前移一位。
总时间复杂度:O(logn)+O(n)=O(n)
- 查找数据:
二分法查找数据。时间复杂度为O(logn)。
- 修改数据 :
二分查找到数据后,进行修改。时间复杂度为O(logn)。
但因为是有序数组,还要进行排序。因为有序数组大部分都是有序,即使使用冒泡排序时间开销也不会太大,所以此处我们使用冒泡序。冒泡排序时间复杂度为O(n²)。
总的时间复杂度:O(n²)+O(logn)
无序数组:
- 添加数据:
(1)空间足够
直接添加在后面,时间复杂度为O(1)
(2)空间不足
整个数组移到另一个空间,再添加元素。
总的时间复杂度:O(1)+O(n)=O(n)
- 删除数据:
使用顺序查找找到删除位置,再把删除位置后的所有元素前移一位。
总时间复杂度:O(n)+O(n)=O(n)
- 查找数据:
使用顺序查找找到数据
时间复杂度:O(n)
- 修改数据:
顺序查找到数据后,进行修改。
时间复杂度为O(n)。