数组,队列

在这里插入图片描述
size:
1、数组中第一次没有元素的位置
2、数组中有多少元素
在这里插入图片描述
构造方法中使用泛型:
构造方法可以为类中的属性初始化,如果类中的属性通过泛型指定,而又需要通过构造方法设置属性内容的时候,构造方法的定义与之前并无不同,不需要像声明类那样指定泛型
删除数组元素:
判断所传索引的合法性:
if(index<0||index>=size)
throw new IllegalArgumentException(“参数不合法”);
将引用赋值为空 (进行垃圾回收) 。
简单复杂度分析:
大O描述的是算法的运行时间和输入数据之间的关系,如O(n)时间和元素个数成线性关系。渐进时间复杂度,描述n趋近无穷的情况。
1、添加操作:
addLast(e) O(1);addFirst(e) O(n);add(index e) O(n/2)=O(n)采用平均复杂度,时间复杂度期望;动态数组resize() O(n);总的来说添加操作的时间复杂度为O(n),这里我们一般指最坏的情况。
2、删除操作:
在这里插入图片描述

3、修改操作:
set(index) O(1)。
4、查询操作:
get(index) O(1)
contains(e) O(n)
find(e) O(n)
增删操作若只对最后一个元素操作依然是O(n),因为resize(最坏情况需要扩容).
5、resize复杂度分析
最坏情况有时意义不大,最坏情况不会每次都出现,考虑均摊复杂度
在这里插入图片描述在这里插入图片描述
6、复杂度震荡
addLast和removeLast每次调用都会触发resize。解决(Lazy方案):扩容时变为原来的一倍,缩容时由容积的1/4触发resize,容积减半.
注:缩容时容积不能为0.

队列出队:
首先判断队列是否为空。
将引用赋值为空 (进行垃圾回收)
注意复杂度震荡
循环队列遍历时的两种方法:

 for(int i=0;i<size;i++){//将原队列中的元素复制到一个新队列
           newData[i]=data[(i+front)%data.length];
       }
 for(int i=front;i!=tail;i=(i+1)%data.length){
            sbr.append(data[i]); 
        }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值