`
purpen
  • 浏览: 795296 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PHP算法:折半查找法(又称二分查找法)

阅读更多

二分查找又称折半查找 ,它是一种效率较高的查找方法。


【二分查找要求】:

1.必须采用顺序存储结构

2.必须按关键字大小有序排列。


【优缺点】折半查找法的优点是比较次数少,查找速度快,平均性能好;

  其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而 查找频繁的有序列表。


【算法思想】首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记 录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

 


PHP例子:

 

<?php 
$a=range(0,146); 
$high=count($a) - 1; 
$mid=0; 
$low=0; 
$found=0; 
$m=89;  //需要查找的值 
while( ($low<=$high) && ($found==0)){ 
    $mid=floor( ($low+$high) / 2 ); 
    if($m<$a[$mid])    
        $high=$mid-1; 
    elseif($m>$a[$mid])    
        $low=$mid+1; 
    else{ 
        $found=1; 
        $key=$mid; 
    } 
    $i++; 
} 
echo "共进行了{$i}次查找\n<br />\n"; 
echo "找到的下标是 {$mid}\n<br />\n"; 
echo "找到标志位 {$found}\n<br />\n"; 
?>
 
分享到:
评论

相关推荐

    折半查找算法在顺序表中插入一个元素讲解.pdf

    折半查找算法在顺序表中插入一个元素讲解 折半查找算法是一种常用的查找算法,它可以在已经排好序的顺序表中快速地找到某个元素。下面我们来详细讲解折半查找算法在顺序表中插入一个元素的过程。 折半查找算法的...

    折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)

    折半查找(二分查找)是一种高效的查找算法,对于顺序存储的有序表,可以快速地找到指定的关键字记录。该算法的基本思想是,每次比较给定值 K 与中间位置记录的关键字值,并根据比较结果确定下一步的查找范围,直到...

    zhebanchazhao.rar_折半 查找_折半查找_折半查找算法_查找_查找算法

    折半查找,也被称为二分查找,是一种在有序数组中搜索特定元素的高效算法。它的基本思想是将数组分成两半,然后比较中间元素与目标值,根据比较结果决定是在左半部分还是右半部分继续查找。这个过程一直持续到找到...

    折半查找算法实现(C++).doc

    二、折半查找算法的实现 以下是 C++ 语言中折半查找算法的实现代码: ```cpp #include using namespace std; void CreateData(int data[], int length) { for (int i = 0; i ; i++) { data[i] = i; } } void ...

    顺序查找和折半查找

    折半查找,又称二分查找,是一种在有序数组中高效查找的方法。它利用了数组的索引特性,每次将待查找的区间减半,从而大大减少了查找次数。具体步骤如下: 1. 首先,找到数组中间的元素。 2. 如果中间元素等于目标值...

    折半查找的简单C语言算法

    使用折半查找,输入一个整数,查找是否在数组中,如在给出下标,否则-1

    折半查找 c语言函数

    折半查找,又称二分查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是通过比较中间元素和目标值,将搜索范围不断缩小为一半,直到找到目标值或者搜索范围为空。这种方法相对于线性查找有显著的效率...

    查找算法:二分查找、顺序查找

    二分查找,也称为折半查找,是一种在有序数据集合中高效查找的算法。它利用了数组的索引特性,将查找过程分成一半再一半,直到找到目标值或者确定目标值不存在。 1. 首先,找到数据集的中间元素。 2. 检查中间元素...

    折半查找的递归与非递归算法

    折半查找,又称二分查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两个部分,每次比较中间元素与目标值,根据比较结果缩小搜索范围。如果中间元素等于目标值,则查找成功;如果中间元素...

    Java代码递归的折半查找算法

    ### Java代码递归的折半查找算法 #### 算法概述 递归版本的折半查找算法是一种高效的搜索技术,适用于已排序的数组。它的工作原理是将问题分解为更小的问题,直到找到目标值或确定目标值不存在于数组中为止。这种...

    静态查找表。实现有序表的折半查找算法

    本篇文章将详细解释如何实现一个静态查找表,并利用折半查找算法(也称二分查找算法)来查询表中的数据。 #### 一、静态查找表的概念 静态查找表是一种只进行查找操作而不允许插入或删除操作的数据结构。其主要...

    实例190 - 泛型化的折半查找法

    实例190 - 泛型化的折半查找法,就是关于如何利用泛型优化传统折半查找算法的一个实践示例。折半查找,也称为二分查找,是一种在有序数组中查找特定元素的搜索算法,其效率比线性查找高得多。 在Java中,传统的折半...

    数据结构中的折半查找程序代码

    数据结构中的折半查找程序,C语言描述,数据结构中的折半查找程序,C语言描述

    利用折半查找整数m在数组中的位置。

    折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low),然后把m于中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围落在中间位置之后的元素中;反之,下一...

    折半(二分)查找算法C语言源程序.zip

    折半查找,又称二分查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是通过比较中间元素和目标值,将搜索范围不断缩小一半,直到找到目标元素或者搜索范围为空。这个方法非常高效,尤其对于大型有序...

    有序数组的折半查找

    折半查找,又称二分查找,是一种在有序数组中查找特定元素的搜索算法。相比传统的顺序查找,它具有更高的效率,尤其是在大型数据集上。折半查找的基本思想是利用数组的有序性,通过每次将查找区间缩小一半来快速定位...

    综合查找算法(顺序查找、折半查找、二叉排序树、哈希表)-数据结构课程设计

    本文将详细探讨四种常见的查找算法:顺序查找、折半查找、二叉排序树查找以及哈希表查找,并结合提供的"综合查找算法"课程设计项目,解析其在实际应用中的特点和优势。 **顺序查找**是最基础的查找算法,适用于任何...

    用折半查找法实现排序问题

    public int searchNumber(double num, boolean updown) {// 折半查找算法 int left = 0, right = Array.length - 1, middle = -1; while (left ) { middle = (left + right) / 2; if (num == Array[middle]) ...

    运用非递归方式设计折半查找法的程序.rar_折半查找

    【标题】:“运用非递归方式设计折半查找法的程序” 折半查找,也称为二分查找,是一种在有序数组中寻找特定元素的搜索算法。它的基本思想是每次将待搜索区域减半,直到找到目标元素或者确定目标元素不存在。这种...

    二叉排序树和折半查找

    折半查找,也称为二分查找,适用于有序数组。首先确定中间元素,然后与目标值比较。如果目标值小于中间元素,就在数组的左半部分继续查找;如果目标值大于中间元素,就在右半部分查找;如果相等,则查找成功。这个...

Global site tag (gtag.js) - Google Analytics