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调用Oracle存储过程
Oct 09 PHP
PHP PDO函数库详解
Apr 27 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
深入extjs与php参数交互的详解
Jun 25 PHP
PHPUnit安装及使用示例
Oct 29 PHP
Laravel与CI框架中截取字符串函数
May 08 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
Jul 21 PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 PHP
PHP使用Redis替代文件存储Session的方法
Feb 15 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 PHP
PHP array_reduce()函数的应用解析
Oct 28 PHP
thinkphp诸多限制条件下如何getshell详解
Dec 09 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
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
一些常用的Javascript函数
2006/12/22 Javascript
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
javascript 禁止复制网页
2009/06/11 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
2014/06/26 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
结合Vue控制字符和字节的显示个数的示例
2018/05/17 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
[03:12]2016完美“圣”典风云人物:单车专访
2016/12/02 DOTA
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python中日志logging模块的性能及多进程详解
2017/07/18 Python
pandas中去除指定字符的实例
2018/05/18 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
Python gevent协程切换实现详解
2020/09/14 Python
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
美国校服网上商店:French Toast
2019/10/08 全球购物
个人廉政承诺书
2015/04/28 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
高一语文教学反思
2016/02/16 职场文书
索尼ICF-36收音机评测
2022/04/30 无线电