PHP数组的查找算法
来源:互联网 发布:pdf图书下载软件 编辑:程序博客网 时间:2024/06/06 13:18
PHP数组的查找算法 即 找出某个数组中是否存在某个值
1.顺序查找 -
就是遍历数组一个一个进行判断如果相等表示找到 退出即可
/** * 数组顺序查找某值 * @param array $arr 要检索的数组 * @param integer $need 要查询的数 * @return integer 找到返回该数下标 失败返回false */ function gener_search($arr,$need){ foreach ($arr as $k => $v) { //如果找到 返回该数小标 if ($need === $v) { return $k; } } //没找到返回false return false; }
二分查找又称折半查找,
优点是比较次数少,查找速度快,平均性能好;
其缺点是要求待查表为有序表,且插入删除困难。
因此,折半查找方法适用于不经常变动而查找频繁的有序列表
/** * 数组二分查找 * @param array $arr 需要检索的数据 * @param integer $need 查找的数 * @param integer $begin 开始的位置 起始(默认)为0 * @param integer $end 结束位置 默认最后 * @return integer 找到返回该数下标 失败返回false */ $arr = array(2,4,6,10,16,26,42,68,110); function binary_search($arr, $need, $begin=0, $end=null){ if (is_null($end)) { $end = count($arr)-1; } //得到数组中间位置 $mid_index = floor(($begin+$end)/2); //中间数如果正好相等 返回索引退出 if ($arr[$mid_index] == $need) { return $mid_index; } //中间数若大于查找数 标识在其左边 左边数据递归操作 if ($arr[$mid_index] > $need) { //数组最小数都大于查找数 直接返回false if ($arr[0] > $need) { return false; } $ret = binary_search($arr, $need, $begin, $mid_index-1); }else{ if ($arr[$end] < $need) { return false; } $ret = binary_search($arr, $need, $mid_index+1, $end); } return $ret; }
0 0
- PHP数组的查找算法
- php数组排序算法、查找算法
- php数组的顺序查找和二分查找
- 基于数组的二分查找算法
- 对于有序数组的二分查找算法
- C++算法之 二维数组的查找
- 基于数组二分查找算法的实现
- [算法学习]二维数组的查找
- 算法学习-查找旋转数组的最小值
- 关于数组的排序和查找算法
- 一维数组的查找算法
- 算法题目--二维数组的查找
- 【算法题】查找旋转数组的值
- 算法练习之二维数组的查找
- php数组顺序查找
- php数组二分法查找
- php数组二分法查找
- PHP的二分查找算法实现
- eclipse支持C++11
- oj2422: C语言习题 n个数逆序
- java书籍
- SQL for ElasticSearch—Crate.io简介
- 23种设计模式(2):工厂方法模式
- PHP数组的查找算法
- 506. Relative Ranks
- 面试题29:数组中出现次数超过一半的数字
- Android——Fragment(碎片)的概念设计...
- 面试题30:最小的K个数
- 基础练习 高精度加法
- MySQL-正则表达式进行复杂匹配
- 字典树
- ccf试题 火车购票