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 相关文章推荐
实现了一个PHP5的getter/setter基类的代码
Feb 25 PHP
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
Sep 02 PHP
几个有用的php字符串过滤,转换函数代码
May 01 PHP
php使用pack处理二进制文件的方法
Jul 03 PHP
PHP类的封装与继承详解
Sep 29 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
php投票系统之增加与删除投票(管理员篇)
Jul 01 PHP
Yii2基于Ajax自动获取表单数据的方法
Aug 10 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
php模式设计之观察者模式应用实例分析
Sep 25 PHP
php回调函数处理数组操作示例
Apr 13 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
在php和MySql中计算时间差的方法
2011/04/22 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
鼠标事件延时切换插件
2011/03/12 Javascript
jquery向.ashx文件post中文乱码问题的解决方法
2011/03/28 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
纯javascript版日历控件
2016/11/24 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
JS写谷歌浏览器chrome的外挂实例
2018/01/11 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
2018/12/03 Javascript
Vue-cli3项目引入Typescript的实现方法
2019/10/18 Javascript
Python的动态重新封装的教程
2015/04/11 Python
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
python正则表达式re之compile函数解析
2017/10/25 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
keras 权重保存和权重载入方式
2020/05/21 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
计算机开发个人求职信范文
2013/09/26 职场文书
营业员演讲稿
2013/12/30 职场文书
导游词开场白
2015/01/31 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
python 实现图片特效处理
2022/04/03 Python