PHP实现的折半查询算法示例


Posted in PHP onOctober 09, 2017

本文实例讲述了PHP实现的折半查询算法。分享给大家供大家参考,具体如下:

什么是折半查询算法?具体文字描述自己百度。直接上代码:

<?php
header("Content-type: text/html; charset=utf-8");
/* 折半查询算法--不用递归 */
function qSort($data = array(), $x = 0){
 $startIndex = 0;    // 开始索引
 $endIndex = count($data) - 1; // 结束索引
 $index = 0;
 $number = 0;     // 计数器
 do{
  if($endIndex > $startIndex){
   $searchIndex = ceil(($endIndex - $startIndex) / 2);
  }else if($endIndex == $startIndex){
   $searchIndex = $endIndex;
  }else{
   $index = -1;
   break;
  }
  $searchIndex += ($startIndex - 1);
  echo '检索范围:'.$startIndex.' ~ '.$endIndex.'<br>检索位置:'.$searchIndex.'检索值为:'.$data[$searchIndex];
  echo '<br>=======================<br><br>';
  if($data[$searchIndex] == $x){
   $index = $searchIndex;
   break;
  }else if($x > $data[$searchIndex]){
   $startIndex = $searchIndex + 1;
  }else{
   $endIndex = $searchIndex - 1;
  }
  $number++;
 }while($number < count($data));
 return $index;
}
/* 折半查询算法--使用递归 */
function sSort($data, $x, $startIndex, $endIndex){
 if($endIndex > $startIndex){
  $searchIndex = ceil(($endIndex - $startIndex) / 2);
 }else if($endIndex == $startIndex){
  $searchIndex = $endIndex;
 }else{
  return -1;
 }
 $searchIndex += ($startIndex - 1);
 echo '检索范围:'.$startIndex.' ~ '.$endIndex.'<br>检索位置:'.$searchIndex.'检索值为:'.$data[$searchIndex];
 echo '<br>=======================<br><br>';
 if($data[$searchIndex] == $x){
  return $searchIndex;
 }else if($x > $data[$searchIndex]){
  $startIndex = $searchIndex + 1;
  return sSort($data, $x, $startIndex, $endIndex);
 }else{
  $endIndex = $searchIndex - 1;
  return sSort($data, $x, $startIndex, $endIndex);
 }
}
$data = array(1, 3, 4, 6, 9, 11, 12, 13, 15, 20, 21, 25, 33, 34, 35, 39, 41, 44);
$index = qSort($data, 11);      // 不用递归的排序方法
$index = sSort($data, 11, 0, count($data) - 1); // 使用递归的排序方法
echo '结果:'.$index;

运行结果:

PHP实现的折半查询算法示例

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP syntax error, unexpected $end 错误的一种原因及解决
Oct 25 PHP
discuz的php防止sql注入函数
Jan 17 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
Sep 22 PHP
功能强大的PHP发邮件类
Aug 29 PHP
ThinkPHP简单使用memcache缓存的方法
Nov 15 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 PHP
PHP中Notice错误常见解决方法
Apr 28 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
PHP使用mongoclient简单操作mongodb数据库示例
Feb 08 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 PHP
php pdo连接数据库操作示例
Nov 18 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
Jan 26 PHP
PHP实现的MD5结合RSA签名算法实例
Oct 07 #PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
Oct 07 #PHP
PHP实现打包下载文件的方法示例
Oct 07 #PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
Oct 07 #PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 #PHP
Laravel 5.5官方推荐的Nginx配置学习教程
Oct 06 #PHP
php判断文件上传图片格式的实例详解
Sep 30 #PHP
You might like
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
php设计模式之观察者模式的应用详解
2013/05/21 PHP
php cli换行示例
2014/04/22 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
php实现登录页面的简单实例
2019/09/29 PHP
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
2012/07/31 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
python中zip和unzip数据的方法
2015/05/27 Python
Python切片操作实例分析
2018/03/16 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
python redis 删除key脚本的实例
2019/02/19 Python
python或C++读取指定文件夹下的所有图片
2019/08/31 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
企业治理工作自我评价
2013/09/26 职场文书
毕业生求职简历中的自我评价
2013/10/18 职场文书
物流专业大学应届生求职信
2013/11/03 职场文书
入学生会自荐书范文
2014/02/05 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python