美文网首页考研技术文档
数据结构与算法-折半查找(二分查找)

数据结构与算法-折半查找(二分查找)

作者: 星空下奔跑 | 来源:发表于2018-03-28 21:34 被阅读0次

以有序表表示静态查找表时,可用折半查找。

折半查找思想:先确定待查记录所在的范围(区间),然后逐步缩小范围直到找到或找不到该记录为止。

算法

int BinarySearch(SqList L,KeyType K){
int low=1,high=L.lenght;
while(low<=high){
  int mid=(low+high)/2;
  if EQ(L.r[mid].key,K) return mid;
  else if LT(L.[mid].key,K) high=mid-1;
  else low=mid +1;
}
  return 0;
}

性能分析

折半查找的过程可用一棵二叉树来表示,称为判定树,查找某个记录过程即为从根节点到该记录的所走的路径,和给定值比较的个数即为该记录所在的层数。
所以折半查找在查找成功时比较的个数不超过判定树的深度由于具有n个结点的判定树深度为(log2n)+1所以查找不成功比较的关键字也不超过(log2n)+1。

平均查找长度为ASL=[log2(n+1)]-1

扩展

斐波那契查找

平均性能比折半查找好,但最坏情况下比折半查找差

int FibonacciSearch(SqList L,KeyType K){
int Fib[]=make_fib(L,L.length);
int low=1,high=L.lenght,loc=Fib.length-1;
while(low<=high){
  int mid=low+Fib[loc]-1;
  if EQ(L.r[loc].key,K) return mid;
  else if LT(L.[loc].key,K) {loc-=1;high=mid-1}
  else{ loc-=2;low=mid+1}
}
  return 0;
}

插值查找

适用于关键字分布均匀的表

int BinarySearch(SqList L,KeyType K){
int low=1,high=L.lenght;
while(low<=high){
  int mid=[(K-L.r[low].key)/(L.r[high].key-L.r[low].key)]*(high-low+1);
  if EQ(L.r[mid].key,K) return mid;
  else if LT(L.[mid].key,K) high=mid-1;
  else low=mid +1;
}
  return 0;
}

相关文章

  • 排序算法

    算法与数据结构基础 查找算法: 二分查找法: 简介:二分查找法又被称为折半查找法,用于预排序的查找问题 过程: 如...

  • 【爬虫】数据结构实现折半查找的算法

    数据结构实现折半查找的算法 折半查找技术,也就是二分查找,通常称为二分法查找。它的前期是线性表中的记录必须是关键码...

  • 二分查找算法

    一、二分查找算法 二分查找算法又称为折半查找算法,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序...

  • 算法:二分法查找(折半查找法)

    算法:二分法查找(折半查找法) 这是最经典的折半查找,而在面试的时候往往会对某些经典的数据结构和算法进行魔改,这道...

  • 数据结构和算法--二分查找

    二分查找 二分查找的思想 二分查找(Binary Search)算法,也叫折半查找算法。 二分查找针对的是一个有序...

  • 常考的数据结构与算法之算法

    本文记录一下我学习数据结构与算法中算法的知识点,使用的语言是C/C++语言 查找 二分查找又叫折半查找,要求线性表...

  • 二分查找算法

    @(算法集) 二分查找算法 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,...

  • 可查找重复元素的二分查找算法

    可查找重复元素的二分查找算法 二分查找算法思想:又称为 折半查找,二分查找适合对已经排序好的数据集合进行查找。假设...

  • 查找算法

    三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表

  • 15-二分查找(上):如何用最省内存的方式实现快速查找功能?

    一种针对有序数据集合的查找算法:二分查找(Binary Search)算法,也叫折半查找算法。 二分查找针对的是一...

网友评论

    本文标题:数据结构与算法-折半查找(二分查找)

    本文链接:https://www.haomeiwen.com/subject/wyaucftx.html