zoukankan      html  css  js  c++  java
  • 数组和链表

    数组(ArrayList)由于是紧凑连续存储,可以随机访问,通过索引快速找到对应元素,⽽且相对节约存储空间。但正因为连续存储,内存空间必须⼀次性分配够,
    所以说数组如果要扩容,需要重新分配⼀块更⼤的空间,再把数据全部复制过去,时间复杂度 O(N);⽽且你如果想在数组中间进⾏插⼊和删除,
    每次必须搬移后⾯的所有数据以保持连续,时间复杂度 O(N)。
    优点:随机查询快、在尾部添加比链表快
    缺点:随机插入、删除相比链表慢
     
    链表(LinkedList)因为元素不连续,⽽是靠指针指向下⼀个元素的位置,所以不存在数组的扩容问题;如果知道某⼀元素的前驱和后驱,操作指针即可删除该元素
    或者插⼊新元素,时间复杂度 O(1)。但是正因为存储空间不连续,你⽆法根据⼀个索引算出对应元素的地址,所以不能随机访问;⽽且由于每个元素
    必须存储指向前后元素位置的指针,会消耗相对更多的储存空间。
    优点:随机插入、删除快  比数组
    缺点:查询慢 相比数组
     
    相同点:两者都是线性表。而且是线程不安全的。Vector 向量 线程安全。 Vector 也是基于数组实现的。
     
     
     
     
    不忘初心,相信自己,坚持下去,付诸实施。
  • 相关阅读:
    IssueQuery failed in redmine rake tasks
    rubymine 调试 redmine
    redmine rake tasks
    rails tutorial sample app
    win7 chm 打开失败记录
    rails再体验(第一个程序)
    Bitnami Redmine插件开发记录
    redmine export long csv file failed: 502 proxy error
    Java时区切换时的需要注意
    Android No static field XXX of type I in class Lcom/XXX/R$id错
  • 原文地址:https://www.cnblogs.com/controller666/p/14513901.html
Copyright © 2011-2022 走看看