java中数组和链表的区别

					论数组和链表

数组和链表是我们最常见也是最常用的数据结构,具体要选择哪种数据结构要根据我们的实际情况而定。我们先了解一下在内存和磁盘中两种数据结构的存储方式
内存:
java中数组和链表的区别_第1张图片

磁盘:
java中数组和链表的区别_第2张图片
磁盘的存储容量和内存的存储容量就类似于excel中的一个个表格,而数组和链表就存储在其中。当我们正常用的时候可以,但是一旦我们对其中的数据进行增删改查,就会导致其中的某一行会只剩下一个个的片段。大类型的数据无法进行存储。导致我们的存储空间越来越小。
当磁盘来说会使存储空间越来越小,但对内存来说确实内存泄漏!是一件很难受的事情!所以合理的使用数据结构是很重要的。
言归正传:数组和链表的区别。
主要分析两种数据结构时间复杂度

  • 有序数组
    add(增):O(n)+O(log(n))
    del(删):O(n)+O(log(n))
    update(改):O(n)+O(log(n))
    select(查):O(1)(按照下标查找) O(log(n)(按照数值查找)
  • 无序数组
    add(增):O(n) (开辟新空间之后移动)
    del(删):O(n) (包括查找和删除共O(n)n为数组长度的大小)
    update(改):O(n)(这个n的数量级小)
    select(查):O(n)(这个n的数量级小)
  • 有序链表
    add(增):O(n)
    del(删):O(n)
    update(改):O(n)
    select(查):O(n)
  • 无序链表
    add(增):O(1)
    del(删):O(n)
    update(改):O(n)
    select(查):O(n)
    所以在利用数据结构对数据进行管理时应该充分考虑数据的特点,选出比较合适的数据结构。在平常的应用中链表一般是没有顺序的,因为无序的链表更好进行操作,而对于数组要注意数组的长度。对于一些类型规范语言来说,对数组的约束是比较严格的。容易因为忘记数组长度的原因的出现数组越界的错误。

第一次写博客,继续加油!

你可能感兴趣的:(数据结构)