常见算法、Arrays、Lambda表达式-Java入门-黑马程序员2022年新视频DAY21笔记

常见算法

此处要介绍的常见的算法为查找算法、排序算法和字符串匹配算法

查找算法

此处要介绍的常见查找算法为基本查找(顺序查找)、二分查找/折半查找、分块查找。(也有插值查找、斐波那契查找、树表查找以及哈希查找)

基本查找(顺序查找)

1.算法核心:从0索引开始挨个往后查找。

二分查找

1.前提条件:数组中的数据必须是有序的。

2.核心逻辑:每次排除一半的查找范围。

3.循环的结束条件:找到了对应数据的位置,或者是min跑到了max的右边。

4.二分查找的优势(相对于顺序查找):提高查找效率。

5.如果数据是乱的,那么先排序再进行二分查找得到的索引就失去了实际的意义,因为希望找到的索引应该是在数组打乱之前的。

6.普通版的二分排序的mid计算是mid = (min + max) / 2可以通过改变mid的计算式去改进算法,mid = min + (key - arr[min]) / (arr[max] - arr[min]) * (max - min),这种查找方法也叫做插值查找。

7.插值查找的意思有点类似于归一化,将待查值与min标志对应的元素值相差的距离相减比上最大最小的差值,这个比值能大概反映出实际值在范围中的位置,此时乘上索引的范围,再加上min,就能比普通二分查找更精确地找到待查值的真实索引值。但是插值查找最好是在分布比较均匀的有序数组上使用,否则效率反而比二分查找低

分块查找

1.分块的原则:

  • 前一块中的最大数据,小于后一块中的所有数据ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值