数据结构之数组小知识

数据结构之数组小知识

1、简介
(1)数组:把数据码成一排进行存放
(2)索引:n个元素的索引为0-(n-1)
(3)数组优点:快速查询,根据索引查,最好应用于索引有语义的情况

2、动态数组
(1)对数组进行增删改查
(2)容量capacity ----- length
(3)索引自动增加到下一个位置
(4)容量不够,原数组容量小,将复制给新数组,索引不变,引用变化,原数组垃圾回收

3、泛型
(1)数据结构可以放置“任意”数据类型,不可以是基本数据类型,只能是类对象
(2)基本数据类型:boolean byte char short int long float double
(3)每个基本数据类型都有对应的包装类:把对象变成类对象

Boolean Byte Char Short Int Long Float Double

4、简单的时间复杂度分析
(1)O(1) O(2) O(nlogn)
(2)O:描述算法的运行时间和输入数据之间的关系,渐进时间复杂度,描述n趋近于无穷的情况
(3)O(n)----n是元素个数,算法和n呈线性关系
(4)Resize复杂度分析

添加操作
AddLast(e)----O(1AddFirst(e)----O(n)
Add(index,e)

5、均摊复杂度amortized time complexity

假设capacity=8,每一次添加操作使用addLast,9次触发resize,共进行了17次基本操作
进行均摊计算,平均每次addLast操作进行了2次基本操作,均摊时间复杂度是O(1)
AddLast的均摊复杂度为O(1)
RemoveLast的均摊复杂度O(1

6、复杂度震荡

对于capacity=n的数组同时进行addLast和removeLast操作
addLast O(n)
removeLast O(n)
addLast O(n)
removeLast O(n)
出现问题的原因:removeLast时的resize过于着急Eager
解决方案:lazy,当size==capacity/4,才将capacity减半
posted @ 2020-03-11 10:20  李泽坤  阅读(145)  评论(0编辑  收藏  举报