12.6_黑马数据结构与算法Java

目录

017 二分查找Left Rightmost应用

017 二分查找 e01 二分查找

017 二分查找 e02 搜索插入位置

017 二分查找 e03 搜索开始结束位置

018 数组 概述

019 动态数组 介绍

020 动态数组 插入

021 动态数组 遍历

022 动态数组 删除

023 动态数组 扩容

024 二维数组

025 数组 缓存与局部性原理

026 链表 概述

027 单向链表 addFirst

028 单向链表 遍历

029 单向链表 addLast

thinking:assertEquals?

thinking:StopWatch?

thinking:无参构造的作用?


017 二分查找Left Rightmost应用

最近邻居:前任和后任谁离target更近谁就是最近邻居

017 二分查找 e01 二分查找

12.5_黑马数据结构与算法Java-CSDN博客

补充理解 平衡版的二分查找:

else{i=m}这里,因为不走if的话,就说明有可能在右边也有可能就是它本身。因此,要i=m。不然就会漏掉m这个值的比较了。

017 二分查找 e02 搜索插入位置

之前已经分析过

017 二分查找 e03 搜索开始结束位置

之前已经分析过

018 数组 概述

019 动态数组 介绍

020 动态数组 插入

021 动态数组 遍历

第一种方法

第二种方法

第三种方法 

022 动态数组 删除

023 动态数组 扩容

024 二维数组

二维数组:大的数组嵌套小的数组

025 数组 缓存与局部性原理

缓存的速度接近于CPU的速度,因此,CPU现在缓存中看有没有要查询的数据,如果有,直接返回,如果没有,还是得从内存中查询。直接从缓存中返回的话,效率会很高。因此缓存的存在意义就是加快读写速度。

 而缓存从内存中读取的字节都是64个字节,不会4个4个这样读取的。64字节也称为缓存行。因此多出来的那些也称为空间局部性。

 

为什么第一种的读取速度这么快呢?因为,缓存是一行一行来的,它读完第一行的第一个元素之后,就会因为空间局部性把后面的也加载出来,从而,后面的这些元素就可以很快地读取出来了。那为什么第二种的读取速度这么慢呢?因为,它读完第一行的第一个元素之后,第一行的其他元素被加载出来了,但是却没有用到,就去读第二行的元素了,以此类推,当读了好几行之后,缓存存满之后,就要去释放没有用的东西,那再读出来的东西就会覆盖原来的缓存行。

026 链表 概述

 

027 单向链表 addFirst

节点:Node

028 单向链表 遍历

什么时候加static? 可以加的话,尽量加static。那什么时候不可以加呢?当用到外部的成员变量的时候,就不可以加static。当这部分是独立的,不和外部的成员变量产生联系的话,就可以加static。阿玮说过:静态只能调静态,非静态可以调所有

029 单向链表 addLast

thinking:assertEquals?

Assert.assertEquals()方法参数详解-CSDN博客

thinking:StopWatch?

StopWatch的使用_stopwatch用法-CSDN博客

thinking:无参构造的作用?

Java有参构造方法与无参构造方法(完全理解)_有参构造方法和无参构造方法-CSDN博客

  • 30
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值