查找算法
文章平均质量分 54
Fred-X
Java开发一枚,持续学习,持续分享。
展开
-
查找算法 - 斐波那契查找(黄金分割法)
简介斐波那契搜索(Fibonacci search) ,又称斐波那契查找,是区间中单峰函数的搜索技术。斐波那契搜索就是在二分查找的基础上根据斐波那契数列进行分割的。在斐波那契数列找一个等于略大于查找表中元素个数的数F[n],将原查找表扩展为长度为F[n] (如果要补充元素,则补充重复最后一个元素,直到满足F[n]个元素),完成后进行斐波那契分割,即F[n]个元素分割为前半部分F[n-1]个元素,后半部分F[n-2]个元素,找出要查找的元素在那一部分并递归,直到找到。时间复杂度O(log2n)思原创 2021-01-16 11:26:20 · 616 阅读 · 0 评论 -
查找算法 - 插值查找
简介插值查找,有序表的一种查找方式。插值查找是根据查找关键字与查找表中最大最小记录关键字比较后的查找方法。插值查找基于二分查找,将查找点的选择改进为自适应选择,提高查找效率。时间复杂度O(loglogN)思路分析插值查找算法类似于二分查找,不同的是插值查找每次从自适应mid处开始查找。将二分查找中的求mid 索引的公式优化改进如图low 表示左边索引lefthigh表示右边索引rightkey 表示 findVal其原理是根据公式巧妙的算出比例值,恰好数组是有序的,在关键字分布均匀原创 2021-01-09 15:03:11 · 875 阅读 · 0 评论 -
查找算法 - 二分查找
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。二分查找要求数组必须有序,正因为有原创 2021-01-06 14:58:59 · 282 阅读 · 2 评论