您的位置:首页 > 汽车 > 时评 > web前端怎么制作网站_费用_搜索热词排名_搜索引擎营销案例分析

web前端怎么制作网站_费用_搜索热词排名_搜索引擎营销案例分析

2024/12/22 19:17:25 来源:https://blog.csdn.net/qq_34514046/article/details/144470834  浏览:    关键词:web前端怎么制作网站_费用_搜索热词排名_搜索引擎营销案例分析
web前端怎么制作网站_费用_搜索热词排名_搜索引擎营销案例分析

链表适合插入、删除,时间复杂度 O(1)

数组是适合查找操作,但是查找的时间复杂度并不为 O(1)。即便是排好序的数组,你用二分查找,时间复杂度也是 O(logn)

数组:内存连续的存储相同类型

【数组插入】:

如果在数组的末尾插入元素,那就不需要移动数据了,这时的时间复杂度为 O(1)。但如果在数组的开头插入元素,那所有的数据都需要依次往后移动一位,所以最坏时间复杂度是 O(n)。 因为我们在每个位置插入元素的概率是一样的, 所以平均情况时间复杂度为 (1+2+...n)/n=O(n)

如果数组不要求顺序,直接替换k位置的元素

和插入类似,如果删除数组末尾的数据,则最好情况时间复杂度为 O(1);如果删除开头的数据,则最坏情况时间复杂度为 O(n);平均情况时间复杂度也为 O(n)

为了避免 d,e,f,g,h 这几个数据会被搬移三次,我们可以先记录下已经删除的数据。每次的删除操作并不是真正地搬移数据,只是记录数据已经被删除。当数组没有更多空间存储数据时,我们再触发执行一次真正的删除操作

用容器替代数组的优势:

ArrayList 最大的优势就是 可以将很多数组操作的细节封装起来 。 比如前面提到的数组插入、删除数据时需要搬移其他数据等。另外,它还有一个优势,就是 支持动态扩容

因为扩容操作涉及内存申请和数据搬移,是比较耗时的。所以,如果事先能确定需要存储的数据大小,最好 在创建 ArrayList 的时候事先指定数据大小

1.Java ArrayList 无法存储基本类型,比如 int、long,需要封装为 Integer、Long 类,而 Autoboxing、Unboxing 则有一定的性能消耗,所以如果特别关注性能,或者希望使用基本类型,就可以选用数组。

2. 如果数据大小事先已知,并且对数据的操作非常简单,用不到 ArrayList 提供的大部分方法,也可以直接使用数组。

3. 还有一个是我个人的喜好,当要表示多维数组时,用数组往往会更加直观。 比如 Object[][] array;而用容器的话则需要这样定义:ArrayList<ArrayList<object> > array

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com