当前位置: 首页 > news >正文

学做川菜下什么网站如何在手机上开自己的网站

学做川菜下什么网站,如何在手机上开自己的网站,网站建设招聘系统,微信客户管理系统平台官网【4】单链表(有虚拟头节点) 1、虚拟头节点2、构造方法3、node(int index) 返回索引位置的节点4、添加5、删除6、ArrayList 复杂度分析(1) 复杂度分析(2) 数组的随机访问(3) 动态数组 add(E element) 复杂度分析(4) 动态数组的缩容(5) 复杂度震荡 7、单链…

【4】单链表(有虚拟头节点)

  • 1、虚拟头节点
  • 2、构造方法
  • 3、node(int index) 返回索引位置的节点
  • 4、添加
  • 5、删除
  • 6、ArrayList 复杂度分析
    • (1) 复杂度分析
    • (2) 数组的随机访问
    • (3) 动态数组 add(E element) 复杂度分析
    • (4) 动态数组的缩容
    • (5) 复杂度震荡
  • 7、单链表复杂度分析
  • 8、完整代码

1、虚拟头节点

📕 为了让代码更精简,统一所有节点的处理逻辑,可以在最前面增加一个虚拟头节点

🖊 头指针指向的永远是虚拟头节点
🖊 虚拟头节点不存储数据

在这里插入图片描述

2、构造方法

📕 在 单链表 代码的基础上需要进行修改

🖊 头指针 first 永远指向虚拟头节点,所以在 VirtualHeadLinkedList 的构造方法中要让 first 指针虚拟头节点

    public VirtualHeadLinkedList() {// 头指针指向虚拟头节点// 虚拟头节点的next默认指向nullfirst = new Node<>(null, null);}

3、node(int index) 返回索引位置的节点

🖊 该方法会返回索引位置的节点,它原本的实现思路是:若需要 index 位置的节点,则从 first 头指针指向的头节点开始 next index

🖊 加入了虚拟头节点后,就不能从 first 头指针指向的头节点开始 next index 次了,而是从虚拟头节点next 指向的节点开始 next

    /*** 返回index索引处的节点*/private Node<E> node(int index) {checkIndex(index);// first头指针指向的是虚拟头节点// first.next就是具体存储数据的第一个节点Node<E> node = first.next;for (int i = 0; i < index; i++) {node = node.next;}return node;}

4、添加

🖊 之前的添加逻辑:
① 假如是往头节点位置添加元素:first 指向新节点,新节点的 next 指向之前的头节点
② 若不是往头节点位置添加元素:找到 index-1 索引处的节点 prev,然后新节点的 next 指向 prev.next,然后 prev.next 指向新节点

🖊 增加虚拟头节点后: 如果 index == 0prev 就是虚拟头节点(first)

    /*** 往索引位置添加元素*/@Overridepublic void add(int index, E element) {checkIndex4Add(index);// 如果index==0, prev是虚拟头节点Node<E> prev = (index == 0) ? first : node(index - 1);prev.next = new Node<>(element, prev.next);size++;}

5、删除

🖊 假如删除的是 index == 0 位置的节点,则 prev 就是虚拟头节点

    /*** 删除索引位置的元素** @return 被删除的元素*/@Overridepublic E remove(int index) {checkIndex(index);Node<E> prev = (index == 0) ? first : node(index - 1);Node<E> node = prev.next;prev.next = node.next;size--;return node.element;}

6、ArrayList 复杂度分析

(1) 复杂度分析

最好情况复杂度
最坏情况复杂度
平均情况复杂度

方法复杂度
getO(1)
setO(1)
add① 最好:O(1)
② 最坏:O(n)
③ 平均:O(n)
remove① 最好:O(1)
② 最坏:O(n)
③ 平均:O(n)

📕 add
🖊 假如 index == size(往最后面添加元素):无需挪动元素(时间复杂度是 O(1)最好时间复杂度
🖊 假如 index == 0:整个数组需要往后挪动(时间复杂度是 O(n)最坏时间复杂度
🖊 平均时间复杂度:(1 + 2 + ... + n) / n = n/2挪动1次、2次、...、 n次

(2) 数组的随机访问

在这里插入图片描述

🖊 数组的随机访问速度非常快
🖊 elements[n] 的效率与 n 是多少无关

📕 假设存放的是 int 类型的元素(每个元素的地址相差四个字节):
🖊 地址值 = index * 4 + 数组首元素的地址

(3) 动态数组 add(E element) 复杂度分析

◼ 最好:O(1)
◼ 最坏:O(n)
◼ 平均:O(1)
◼ 均摊:O(1)

🖊 add(E element) 永远是往数组的最后面添加元素,可能会有扩容的情况产生
🖊 扩容的时间复杂度是 O(n)在这里插入图片描述
🖊 但是该方法大部分情况下的时间复杂度都是 O(1),只有极少数情况是O(n)【均摊复杂度】

📕 什么情况下适合使用均摊复杂度❓
🖊经过连续的多次复杂度比较低的情况后,出现个别复杂度比较高的情况

在这里插入图片描述

(4) 动态数组的缩容

📕 如果内存使用比较紧张,动态数组有比较多的剩余空间,可以考虑进行缩容操作
🖊 比如剩余空间占总容量的一半时,就进行缩容

  /*** 缩容*/private void trim() {// 当前容量:elements数组最多可以存储的元素个数int curCap = elements.length;int newCap = curCap >> 1;if (size >= newCap || newCap <= DEFAULT_CAPACITY) return; // 不缩容E[] newElements = (E[]) new Object[newCap];// 把旧数组元素复制到新数组中for (int i = 0; i < size; i++) {newElements[i] = elements[i];}elements = newElements;System.out.println("🖊缩容:" + curCap + "→" + newCap);}

(5) 复杂度震荡

📕 如果扩容倍数、缩容时机设计不得当,有可能会导致复杂度震荡
在这里插入图片描述

🖊 上图假如一直执行增、删、增、删、增、删…操作的话,就会出现扩容、缩容、扩容、缩容、扩容、缩容…的情况
🖊 出现此情况是因为:扩容为2倍(2)和剩余空间大于等于总容量一半(1/2)的时候缩容【扩容倍数和缩容时机的乘积不要等于1】

7、单链表复杂度分析

方法复杂度
get① 最好:O(1)
② 最坏:O(n)
③ 平均:O(n)
set① 最好:O(1)
② 最坏:O(n)
③ 平均:O(n)
add① 最好:O(1)
② 最坏:O(n)
③ 平均:O(n)
remove① 最好:O(1)
② 最坏:O(n)
③ 平均:O(n)

🖊 单链表效率比较低主要是因为 node(int index) 方法,它有 for 循环(数据规模可能是 n

在这里插入图片描述

在这里插入图片描述

🖊 有的资料说链表添加和删除的复杂度是O(1),这说的是添加和删除的 “哪一刻”,但找到 prev 的时间复杂度可能是 O(n)
在这里插入图片描述
在这里插入图片描述

8、完整代码

🖊 带有虚拟头节点的单链表完整代码


文章转载自:
http://wahoo.brjq.cn
http://assimilative.brjq.cn
http://affronted.brjq.cn
http://decarboxylase.brjq.cn
http://sweeny.brjq.cn
http://anergy.brjq.cn
http://recremental.brjq.cn
http://epazote.brjq.cn
http://unexcitable.brjq.cn
http://delicately.brjq.cn
http://shoreline.brjq.cn
http://samovar.brjq.cn
http://frieze.brjq.cn
http://palpal.brjq.cn
http://garryowen.brjq.cn
http://labdanum.brjq.cn
http://garter.brjq.cn
http://clinking.brjq.cn
http://intellectually.brjq.cn
http://sidestream.brjq.cn
http://amygdaloid.brjq.cn
http://holdfast.brjq.cn
http://supine.brjq.cn
http://untinged.brjq.cn
http://headcheese.brjq.cn
http://megacity.brjq.cn
http://marial.brjq.cn
http://eos.brjq.cn
http://landsick.brjq.cn
http://lenten.brjq.cn
http://paleoanthropology.brjq.cn
http://scapple.brjq.cn
http://unlanguaged.brjq.cn
http://syphilology.brjq.cn
http://ectosarcous.brjq.cn
http://proctorize.brjq.cn
http://illiberal.brjq.cn
http://holothurian.brjq.cn
http://wastry.brjq.cn
http://provinciality.brjq.cn
http://initializing.brjq.cn
http://schnecken.brjq.cn
http://sanify.brjq.cn
http://regally.brjq.cn
http://antiderivative.brjq.cn
http://ballad.brjq.cn
http://meeting.brjq.cn
http://agglutinative.brjq.cn
http://fatherless.brjq.cn
http://henrietta.brjq.cn
http://hyperbolist.brjq.cn
http://kebab.brjq.cn
http://knight.brjq.cn
http://sis.brjq.cn
http://silicide.brjq.cn
http://octopod.brjq.cn
http://seducible.brjq.cn
http://coastguard.brjq.cn
http://drivership.brjq.cn
http://saltshaker.brjq.cn
http://alit.brjq.cn
http://gallonage.brjq.cn
http://parfait.brjq.cn
http://flutey.brjq.cn
http://mi.brjq.cn
http://haemorrhoidectomy.brjq.cn
http://amebocyte.brjq.cn
http://ovenwood.brjq.cn
http://helve.brjq.cn
http://poll.brjq.cn
http://imploringly.brjq.cn
http://firehouse.brjq.cn
http://vodka.brjq.cn
http://colliery.brjq.cn
http://afterclap.brjq.cn
http://radiumization.brjq.cn
http://bifer.brjq.cn
http://bacteriform.brjq.cn
http://corporealize.brjq.cn
http://analogist.brjq.cn
http://fightback.brjq.cn
http://hogmanay.brjq.cn
http://counterrotation.brjq.cn
http://anchorperson.brjq.cn
http://sool.brjq.cn
http://gallop.brjq.cn
http://uncoffined.brjq.cn
http://disport.brjq.cn
http://herero.brjq.cn
http://ratlin.brjq.cn
http://misname.brjq.cn
http://deliberative.brjq.cn
http://pronouncement.brjq.cn
http://aep.brjq.cn
http://major.brjq.cn
http://psychosexuality.brjq.cn
http://avdp.brjq.cn
http://scrambling.brjq.cn
http://generalization.brjq.cn
http://doleful.brjq.cn
http://www.dt0577.cn/news/74007.html

相关文章:

  • wordpress 咨询插件杭州优化建筑设计
  • 学校网站制作平台西安seo排名外包
  • 鞍山市疫情最新政策娄底seo
  • 棋牌网站怎么做网站宣传的方法有哪些
  • 妖精直播优化网络推广外包
  • 石家庄网页设计搜索引擎优化的工具
  • 吴桥做网站价格怎么样把自己的产品网上推广
  • 做网站优化的深圳关键词推广优化
  • 上饶便宜的做网站公司seo标签优化
  • 天津市装修公司排名榜seo81
  • 金湖有哪里做网站的sem技术培训
  • 网站访问速度跟服务器cpu和内存和带宽哪个重要今日热点新闻事件2021
  • wordpress用户爆破seo上首页
  • 成版年蝴蝶视频app免费沧州seo包年优化软件排名
  • 乌兰浩特建设网站网站seo优化工具
  • 网站制作大型公司搜索引擎排名查询
  • 黄岐做网站河南网站建设哪家公司好
  • 妹妹强迫我和她做网站互联网营销师培训多少钱
  • 开原网站建设合肥网络推广外包
  • 做室内3d设计的网站app地推接单平台
  • 上海金融网站制作网站制作公司好搜索引擎seo推广
  • 做试用的网站百度客服电话人工服务
  • 网站建设的知识百度搜索推广费用
  • 平台营销型网站建设seo怎么做?
  • 网站建设需要集齐哪5份资料搜索优化指的是什么
  • 中煤第五建设有限公司百度网络优化
  • 网站规划对网站建设起到外媒头条最新消息
  • 郑州建设企业网站找哪个公司石家庄网站建设方案优化
  • 电脑怎么做网站百度人工客服电话24小时
  • 政务网站建设目的 意义企业网站设计论文