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函数
Feb 16 PHP
thinkPHP的Html模板标签使用方法
Nov 13 PHP
基于PHP生成静态页的实现方法
May 10 PHP
smarty模板引擎基础知识入门
Mar 30 PHP
php自动更新版权信息显示的方法
Jun 19 PHP
php实现的简单美国商品税计算函数
Jul 13 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
深入理解PHP之源码目录结构与功能说明
Jun 01 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
PHP实现一个轻量级容器的方法
Jan 28 PHP
详解no input file specified 三种解决方法
Nov 29 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的urlencode()URL编码函数浅析
2011/08/09 PHP
图文介绍PHP添加Redis模块及连接
2015/07/28 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
js获取RadioButtonList的Value/Text及选中值等信息实现代码
2013/03/05 Javascript
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
基于canvas的二维码邀请函生成插件
2017/02/14 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
python 性能提升的几种方法
2016/07/15 Python
Python 查看文件的编码格式方法
2017/12/21 Python
Python Logging 日志记录入门学习
2018/06/02 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
Python参数传递对象的引用原理解析
2020/05/22 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
中国梦团日活动总结
2014/07/07 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
应用心理学专业求职信
2014/08/04 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
民事调解协议书
2016/03/21 职场文书