极客时间高级java工程师体系课2.0 【好课apro660】

Sunoi
创建于2023-02-24
阅读 0
收藏TA

需扫码在手机上打开
文章后点击更新提醒

数组的插入最好时间复杂度为O(1),最坏的时间复杂度为O(n),平均时间复杂度为O(n).

数组插入的改善方法:当数组存储的无序数据时,可以将插入的值直接放入,把替换的值放入到数组的末尾.

数组的删除的最好时间复杂度为O(1),最坏的时间复杂度为O(n),平均时间复杂度为O(n).

数组插入的改善方法:当数组删除时,并不是真正的删除.只是标记为删除.只有当插入数据数组存储不下时开始真正的清除

数组中标记为删除的数据.多次删除集中在一起,提高效率.

数组为什么可以根据下标随机访问?

首先数组是一个连续的内存空间.然后可以根据  a[i]_address = base_address + + i * data_type_size.这个公式在知道了

下标的情况下取出存储的值.

多维数组的寻址公式: 若二维数组大小为m*n,那么寻址公式为a[i][j]_address = base_address + (i * n+j)*data_type_size

容器能否完全替代数组?

相比于数字,java中的ArrayList封装了数组的很多操作,并支持动态扩容。一旦超过村塾容量,扩容时比较耗内存,

因为涉及到内存申请和数据搬移。

数组适合的场景:

1) Java ArrayList 的使用涉及装箱拆箱,有一定的性能损耗,如果特别管柱性能,可以考虑数组

2) 若数据大小事先已知,并且涉及的数据操作非常简单,可以使用数组

3) 表示多维数组时,数组往往更加直观。

4) 业务开发容器即可,底层开发,如网络框架,性能优化。选择数组。

阅读 0
文章由 美篇工作版 编辑制作
投诉