常见算法
此处要介绍的常见的算法为查找算法、排序算法和字符串匹配算法
查找算法
此处要介绍的常见查找算法为基本查找(顺序查找)、二分查找/折半查找、分块查找。(也有插值查找、斐波那契查找、树表查找以及哈希查找)
基本查找(顺序查找)
1.算法核心:从0索引开始挨个往后查找。
二分查找
1.前提条件:数组中的数据必须是有序的。
2.核心逻辑:每次排除一半的查找范围。
3.循环的结束条件:找到了对应数据的位置,或者是min跑到了max的右边。
4.二分查找的优势(相对于顺序查找):提高查找效率。
5.如果数据是乱的,那么先排序再进行二分查找得到的索引就失去了实际的意义,因为希望找到的索引应该是在数组打乱之前的。
6.普通版的二分排序的mid计算是可以通过改变mid的计算式去改进算法,
,这种查找方法也叫做插值查找。
7.插值查找的意思有点类似于归一化,将待查值与min标志对应的元素值相差的距离相减比上最大最小的差值,这个比值能大概反映出实际值在范围中的位置,此时乘上索引的范围,再加上min,就能比普通二分查找更精确地找到待查值的真实索引值。但是插值查找最好是在分布比较均匀的有序数组上使用,否则效率反而比二分查找低。
分块查找
1.分块的原则:
- 前一块中的最大数据,小于后一块中的所有数据ÿ