php顺序查找和二分查找示例
<?php
class search
{
// 查找的源数组
private $array = array(1,2,3,5,7,6,4,8);
/**
* 顺序查找法
* @param $val 要查找的值
*/
public function query_search($val)
{
foreach ($this->array as $k => $v)
{
if($v == $val)
{
echo '顺序查找成功!';
exit(0);
}
}
echo '顺序查找失败!';
}
/**
* 二分查找法
* @param $val 要查找的值
*/
public function bin_search($val)
{
sort($this->array);
$min = 0;
$max = count($this->array);
for ($i = $min; $i < $max; $i++)
{
$mid = ceil(($min + $max) / 2);
if($val == $this->array[$mid])
{
echo '二分查找成功!';
exit(0);
}
else if($val < $this->array[$mid])
{
$max = $mid;
}
else if($val > $this->array[$mid])
{
$min = $mid;
}
}
echo '二分查找失败!';
}
}
相关推荐
-
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
数据结构很重要,算法+数据结构+文档=程序使用PHP描述冒泡排序算法,对象可以是一个数组 复制代码 代码如下: //冒泡排序(数组排序)function bubble_sort($array) {$count = count($array);if ($count <= 0)return false;for($i=0; $i<$count; $i++){for($j=$count-1; $j>$i; $j–){if ($array[$j] < $array[$j-1]){$tmp =
-
php二分查找二种实现示例
php二分查找示例 二分查找常用写法有递归和非递归,在寻找中值的时候,可以用插值法代替求中值法.当有序数组中的数据均匀递增时,采用插值方法可以将算法复杂度从中值法的lgN减小到lglgN 复制代码 代码如下: /** * 二分查找递归解法 * @param type $subject * @param type $start * @param type $end * @param type $key * @return boolean */function binarySearch_r($sub
-
PHP面试常用算法(推荐)
一.冒泡排序 基本思想: 对需要排序的数组从后往前(逆序)进行多遍的扫描,当发现相邻的两个数值的次序与排序要求的规则不一致时,就将这两个数值进行交换.这样比较小(大)的数值就将逐渐从后面向前面移动. //冒泡排序 <?php function mysort($arr) { for($i = 0; $i < count($arr); $i++) { $isSort = false; for ($j=0; $j< count($arr) - $i - 1; $j++) { if($arr[$
-
使用PHP实现二分查找算法代码分享
第一种方法: [二分查找要求]:1.必须采用顺序存储结构 2.必须按关键字大小有序排列. [优缺点]折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表. [算法思想]首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功:否则利用中间位置记录将表分成前.后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表. 复制代码 代码如下: <?
-
PHP经典算法集锦【经典收藏】
本文实例总结了PHP经典算法.分享给大家供大家参考,具体如下: 1.首先来画个菱形玩玩,很多人学C时在书上都画过,咱们用PHP画下,画了一半. 思路:多少行for一次,然后在里面空格和星号for一次. <?php for($i=0;$i<=3;$i++){ echo str_repeat(" ",3-$i); echo str_repeat("*",$i*2+1); echo '<br/>'; } 2.冒泡排序,C里基础算法,从小到大对一组数
-
PHP常用的排序和查找算法
本文汇总了常见的php排序算法和查找,在进行算法设计的时候有不错的借鉴价值.现分享给大家供参考之用.具体如下: <?php /** * PHP最常用的四个排序方法及二种查找方法 * 下面的排序方法全部都通过测试 * auther : soulence * date : 2015/06/20 */ //PHP冒泡排序法 function bubbleSort(&$arr){ //这是一个中间变量 $temp=0; //我们要把数组,从小到大排序 //外层循环 $flag=false;//这个优
-
php四种基础算法代码实例
php四种基础算法:冒泡,选择,插入和快速排序法许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣.作为一个初级phper,虽然很少接触到算法方面的东西 .但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要掌握的.下面是我按自己的理解,将四个方法分析一遍.需求:分别用 冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中 的值按照从小到的顺序进行排序. $arr(1,43,54,62,21,66,32,78,36,76,39); 1. 冒泡排序法
-
PHP二分查找算法的实现方法示例
本文实例讲述了PHP二分查找算法的实现方法.分享给大家供大家参考,具体如下: 二分查找法需要数组是一个有序的数组 假设我们的数组是一个递增的数组,首先我们需要找到数组的中间位置. 1. 要知道中间位置就需要知道起始位置和结束位置,然后取出中间位置的值来和我们的值做对比. 2. 如果中间值大于我们的给定值,说明我们的值在中间位置之前,此时需要再次二分,因为在中间之前,所以我们需要变的值是结束位置的值,此时结束位置的值应该是我们此时的中间位置. 3. 反之,如果中间值小于我们给定的值,那么说明给定值
-
php实现的二分查找算法示例
本文实例讲述了php实现的二分查找算法.分享给大家供大家参考,具体如下: <?php $arr = array(4,58,11,34,88,45,32,54,63,78); function binary($arr,$bnum) { if(is_array($arr) && count($arr) > 0) { sort($arr); $start = 0; $end = count($arr)-1; $mid = -1; while($start <= $end) {
-
PHP二分查找算法示例【递归与非递归方法】
本文实例讲述了PHP二分查找算法.分享给大家供大家参考,具体如下: binarySearch 二分查找采用的方法比较容易理解,以数组为例: ① 先取数组中间的值floor((low+top)/2), ② 然后通过与所需查找的数字进行比较,若比中间值大,则将首值替换为中间位置下一个位置,继续第一步的操作:若比中间值小,则将尾值替换为中间位置上一个位置,继续第一步操作 ③ 重复第二步操作直至找出目标数字 比如从1,3,9,23,54 中查找数字23, 首位置为0, 尾位置为4,中间位置就为2 值为9
随机推荐
- javascript 鼠标滚轮事件
- Powershell获取图片名字、文件夹及拍摄时间的例子
- Docker 打包python的命令详解
- SpringMVC上传和解析Excel方法
- Asp.net XMLHTTP封装类(GET,Post发送和接收数据)
- 比较详细的ASP rs.open语句详细说明
- 解决bash: mysql: command not found 的方法
- windows环境下mysql数据库的主从同步备份步骤(单向同步)
- 第三章之Bootstrap 表格与按钮功能
- Ajax的内部实现机制、原理与实践小结
- Android 安全加密:消息摘要Message Digest详解
- javascript图片自动缩放和垂直居中处理函数
- 深入学习JavaWeb中监听器(Listener)的使用方法
- Win7下手动安装apache2.2、php5.4笔记
- jQuery中:checkbox选择器用法实例
- javascript 方法一些使用方法
- JS取request值以及自动执行使用示例
- PHP获取用户客户端真实IP的解决方案
- Android开发自学笔记(六):声明权限和Activity
- 我的论坛源代码(六)