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 相关文章推荐
Email+URL的判断和自动转换函数
Oct 09 PHP
php 保留小数点
Apr 21 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
Jul 01 PHP
php 使用GD库为页面增加水印示例代码
Mar 24 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
May 23 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
Jun 22 PHP
PHP实现自动识别Restful API的返回内容类型
Feb 07 PHP
PHP中COOKIES使用示例
Jul 26 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 PHP
thinkphp修改配置进入默认首页的方法
Feb 07 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
Apr 06 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中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
PHP strripos函数用法总结
2019/02/11 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
PHP dirname简单使用代码实例
2020/11/13 PHP
[JS]点出统计器
2020/10/11 Javascript
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
jQuery中$.extend()用法实例
2015/06/24 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
JS组件Bootstrap实现弹出框和提示框效果代码
2015/12/08 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
vue实现未登录跳转到登录页面的方法
2018/07/17 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
layer提示框添加多个按钮选择的实例
2019/09/12 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
python检测某个变量是否有定义的方法
2015/05/20 Python
编写Python爬虫抓取暴走漫画上gif图片的实例分享
2016/04/20 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
Redis中一个String类型引发的惨案
2021/07/25 Redis