查找算法
文章平均质量分 85
常用查找算法
BaldIsImpossible
这个作者很懒,什么都没留下…
展开
-
七大查找算法——分块查找(五)
//分块查找//O(log2n)~O(n),块内无序,块与块有序。//分块查找又称索引顺序查找,它是顺序查找的一种改进方法。// 算法思想:将n个数据元素"按块有序"划分为m块(m ≤// n)。每一块中的结点不必有序,但块与块之间必须"按块有序";即第1块中任一元素的关键字都必须小于第2块中任一元素的关键字;而第2// 块中任一元素又都必须小于第3块中的任一元素,……// 算法流程:// step1 先选取各块原创 2021-02-23 14:11:28 · 2079 阅读 · 1 评论 -
七大查找算法——斐波那契查找(四)
//斐波那契查找//该查找mid = left + f[k-1] - 1;不涉及除法,如果该数列长度正好等于一个斐波那契数-1,那么理论情况要比有除法的二分查找法快。//同样要求有序数列,也是对二分查找的一种改进,用黄金分割来拆分。复杂度分析:最坏情况下,时间复杂度为O(log2n),且其期望复杂度也为O(log2n)。//黄金比例又称黄金分割,是指事物各部分间一定的数学比例关系,即将整体一分为二,较大部分与较小部分之比等于整体与较大部分之比,其比值约为1:0.618或1// .618:1。//斐原创 2021-02-23 14:10:38 · 683 阅读 · 0 评论 -
七大查找算法——插值查找(三)
//插值查找//基本思想:基于二分查找算法,将查找点的选择改进为自适应选择,可以提高查找效率。当然,差值查找也属于有序查找。// 注:对于表长较大,而关键字分布又比较均匀的查找表来说,插值查找算法的平均性能比折半查找要好的多。// 反之,数组中如果分布非常不均匀,那么插值查找未必是很合适的选择。// 复杂度分析:查找成功或者失败的时间复杂度均为O(log2(log2n))。public class InterpolationSearch {原创 2021-02-23 14:09:33 · 448 阅读 · 0 评论 -
七大查找算法——二分查找(二)
// 二分查找(折半查找)// 说明:元素必须是有序的,如果是无序的则要先进行排序操作。//// 基本思想:也称为是折半查找,属于有序查找算法。用给定值k// 先与中间结点的关键字比较,中间结点把线形表分成两个子表,若相等则查找成功;若不相等,// 再根据k与该中间结点关键字的比较结果确定下一步查找哪个子表,这样递归进行,直到查找到或查找结束发现表中没有这样的结点。//// 复杂度分析:最坏情况下,关键词比较次数为log2(n原创 2021-02-23 14:08:28 · 533 阅读 · 0 评论 -
七大查找算法——顺序查找(一)
//顺序查找//说明:顺序查找适合于存储结构为顺序存储或链接存储的线性表。//基本思想:顺序查找也称为线形查找,属于无序查找算法。从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;// 若扫描结束仍没有找到关键字等于k的结点,表示查找失败。//复杂度分析: //查找成功时的平均查找长度为:(假设每个数据元素的概率相等) ASL = 1/n(1+2+3+…+n) = (n+1)/2 ; Pi:1/n; Ci:// (1+2+3+…+n);//当原创 2021-02-23 14:07:02 · 1193 阅读 · 0 评论