zoukankan      html  css  js  c++  java
  • 数组

    • 数组也是呈线性排列的一种数据结构。在数组中访问数据非常简单,但是添加和删除数据比较耗时间。

     

    • a是数组的名字,后面[]中的数字表示该数据是数组中的第几个数据(这个数字是数组的下标,下标从0开始计数)。比如Red就是数组a的第2个数据。
    • Blue、Yellow、Red作为数据都存储在数组中。

    1、存储方式。数据按照顺序存储在连续的空间内。由于数据是存储在连续空间的,所以每个数据的内存地址(在内存上的位置)都可以通过数组下标算出来,也可以通过这个直接访问目标数据(随机访问)。

    2、访问数据。例如想要访问Red,如果使用指针只能从头开始查找,但是在数组中,只需要指定a[2]就能直接访问Red。

    3、添加数据。如果想要在任意位置上添加或删除数据,数组的操作就比链表复杂多了。例如将Green添加到第2个位置上。

    首先,需要在数据的尾部确保需要增加的存储空间。

    为了给新的数据腾空间,需要把已有的数据一个个的移开,首先将Red往后移动。

     然后将Yellow往后移动

     最后在空出来的位置写入Green。

    添加数据操作就完成了。

     4、删除数据。如果要删除Green,首先删除目标数据Green

     然后把后面的数据一个个的往空位移动,先把Yellow往前移动。

     接下来移动Red。

    最后删除多余的空间,现在Green就被删除了。

    • 假设数组中有n个数据,由于访问数据时使用的时随机访问(可通过下标计算内存地址),所以需要运行时间为恒定的,即O(1)。
    • 但是如果想要从数组中添加新数据,必须把目标位置后面的数据一个个移开。如果想在数组头部添加数据,需要O(n)的时间,删除操作也是需要O(n)。
    欢迎批评指正,提出问题,谢谢!
  • 相关阅读:
    Mongo DB intro
    java class 初始化
    Java Multi-Thread
    Java Exception
    PHP基础2
    Java STL
    javascript getElemet 获取元素 (转)
    javascript 异常处理
    javascript 输出
    LinkButton跳转页面及传递参数(转载)
  • 原文地址:https://www.cnblogs.com/xxeleanor/p/14460988.html
Copyright © 2011-2022 走看看