解析php二分法查找数组是否包含某一元素

 更新时间:2013年05月23日 11:33:36   作者:  
本篇文章是对在php中二分法查找数组是否包含某一元素进行了详细的分析介绍,需要的朋友参考下
二分法查找数组是否包含某一元素,兼容正反序,代码实现:
复制代码 代码如下:

<?php

 $searchValue = (int)$_GET['key'];

 function search(array $array, $value)
 {
     $max = count($array)-1;
     $min = 0;
     $isAscSort = $array[$min] < $array[$max];

     while (TRUE) {
         $sum = $min+$max;
         $midKey = (int)($sum%2 == 1 ? ceil($sum/2) : $sum/2);

         if ($max < $min) {
             return -1;
         } else if ($value == $array[$midKey]) {
             return 1;
         } else if ($value > $array[$midKey]) {
             $isAscSort ? $min = $midKey+1 : $max = $midKey-1;
         } else if ($value < $array[$midKey]) {
             $isAscSort ? $max = $midKey-1 : $min = $midKey+1;
         }
     }
 }

 $array = array(
     '4', '5', '7', '8', '9', '10', '11', '12'
 );
 // 正序
 echo search($array, $searchValue);

 // 逆序
 rsort($array);
 echo search($array, $searchValue);

这个之前搜过,看过百度百科的例子(Java的实现),还有一些其他技术宅写的Code,都有问题,根本就没实现,这些人不测试就放出来误导人,大家可以去搜搜看下,昨天闲来无事就自己写一个分享给大家。
这个没考虑非顺序键的数组,主要是方法,如果需要大家可以自己扩展下。

相关文章

  • PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析

    PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析

    这篇文章主要介绍了PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法,结合具体实例形式分析了蛇形矩阵,回环矩阵及数字螺旋矩阵的概念、表示方法及php实现技巧,需要的朋友可以参考下
    2017-05-05
  • php中使用addslashes函数报错问题的解决方法

    php中使用addslashes函数报错问题的解决方法

    php中使用addslashes函数报错问题的解决方法,需要的朋友可以参考下
    2013-02-02
  • php获取textarea的值并处理回车换行的方法

    php获取textarea的值并处理回车换行的方法

    这篇文章主要介绍了php获取textarea的值并处理回车换行的方法,涉及到对特殊字符的转换与处理,需要的朋友可以参考下
    2014-10-10
  • php 无极分类(递归)实现代码

    php 无极分类(递归)实现代码

    php 无极分类(递归)实现代码,需要的朋友可以参考下。
    2010-01-01
  • PHP CURL使用详解

    PHP CURL使用详解

    今天小编就为大家分享一篇关于PHP CURL使用详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • PHP获取栏目的所有子级和孙级栏目的ID号示例

    PHP获取栏目的所有子级和孙级栏目的ID号示例

    这篇文章主要介绍了PHP获取栏目的所有子级和孙级栏目的ID号的具体实现,需要的朋友可以参考下
    2014-04-04
  • php保留数字小数点后两位的方法

    php保留数字小数点后两位的方法

    我们在学习或生活中经常会遇到需要保留数字小数点后两位的问题,所以本文小编给大家介绍了使用php保留数字小数点后两位的方法,文中通过代码示例介绍的非常详细,感兴趣的同学可以参考阅读下
    2023-12-12
  • php实现的后台表格分页功能示例

    php实现的后台表格分页功能示例

    这篇文章主要介绍了php实现的后台表格分页功能,涉及php针对数据库的连接、查询、删除、动态生成表格等相关操作技巧,需要的朋友可以参考下
    2017-10-10
  • PHP实现动态表单生成工具详解

    PHP实现动态表单生成工具详解

    表单包含多种input类型,包括 hiiden类型 ,text类型,radio类型等。但手写表单累,耗时耗力,开发销量太低且代码量大了还容易写出bug,所以本文将用PHP编写动态表单生成工具,需要的可以参考一下
    2022-03-03
  • PHP中多字节字符串操作实例详解

    PHP中多字节字符串操作实例详解

    我们所说的多字节字符指的是不在传统的 128 个 ASCII 字符集中的字符,比如中文字符,下面这篇文章主要给大家介绍了关于PHP中多字节字符串操作的相关资料,需要的朋友可以参考下
    2021-08-08

最新评论