当前位置:首页 > 日记 > 正文

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

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

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

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

<?phpheader("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面向对象程序设计入门教程》、《php字符串(string)用法总结》及《php程序设计算法总结》

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

相关文章

JS查找英文文章中出现频率最高的单

JS查找英文文章中出现频率最高的单

查找,英文,单词,频率最高,文章,下面这个函数是js查找一篇英文文章中出现频率最高的单词(由26个英文字母大小写构成),输出该单词及出现次数,不区分大小写,主要是正则的运用:function counts(article){ article = article.trim().toUpperCase(); …

Angularjs 动态添加指令并绑定事件

Angularjs 动态添加指令并绑定事件

绑定事件,动态添加,指令,方法,电脑软件,这两天学习了angularjs 感觉指令这个地方知识点挺多的,而且很重要,所以,今天添加一点小笔记。先说使用场景,动态生成DOM元素并绑定事件,非常常见的一种场景,用jq实现效果:var count=0;$("#test").on("cli…

excel2007使用t检验的方法excel200

excel2007使用t检验的方法excel200

方法,电脑软件,检验方法,  在Excel中经常录入好数据以后就需要进行数据检验,其中T检验较为常用,如果不懂得如何使用T检验的朋友不妨学习一番。下面是由小编分享的excel2007使用t检验的方法,供大家阅读、学习。excel2007使用t检验的方法T检验…

Painter制作像蒙太奇一样柔和的挥

Painter制作像蒙太奇一样柔和的挥

蒙太奇,柔和,效果,电脑软件,Painter,说明一点:这种效果比较适用于没有线或者线不太明显的图图,对于比较注重线条的CG来说出来的效果往往会出现&ldquo;单薄&rdquo;的感觉。另外这种效果可以单独只针对某一层或某一对象,也可以 做用于整张CG,.这…

ppt2010页码怎么设置从第二页开始

ppt2010页码怎么设置从第二页开始

设置,方法,页码,电脑软件,  前面我们知道了怎么在PowerPoint2013中给幻灯片添加默认格式的页码,是只有一个数字的那种,那如果我们需要的是那种加上了总页数的页码,怎么在ppt2013中第二页设置页码呢?下面小编就为你提供ppt2013如何设置页码的…

powerpoint无法插入页码怎么办

powerpoint无法插入页码怎么办

页码,解决办法,电脑软件,powerpoint,PPT,  在制作PPT时,会遇到各种问题,无法添加页码就属于其中一类,就那么要怎么解决呢?下面给大家分享PPT不能添加页码的解决办法吧,希望小编收集的资料对大家有用。PPT不能添加页码的解决办法新建一个幻灯…

新闻上下滚动jquery 超简洁 | 必看

新闻上下滚动jquery 超简洁 | 必看

上下滚动,必看,简洁,新闻,电脑软件,实例如下:<div class = "box"><dl class="textlist"><dd>11你好,欢迎来到</dd><dd>22你好,欢迎来到</dd><dd>33你好,欢迎来到</dd><dd>44你好,欢迎来到</dd><dd>55你好,欢迎来到</dd></dl></div><script>$(…

JavaScript闭包的简单应用

JavaScript闭包的简单应用

闭包,简单,电脑软件,JavaScript,闭包定义在JavaScript中,当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包。简单说,闭包就是能够读取其他函数内部变量的函数。闭包的作用:1. 可以读取函数内部的变量2. 让这些变量的值始终保持在…

excel2007怎样设置同时冻结行和列

excel2007怎样设置同时冻结行和列

设置,冻结,方法,电脑软件,  现在使用Word 2010和Excel 2010的人越来越多,但使用的广泛性并不代表其中的功能都容易掌握,今天,小编就教大家怎样在Excel 2010中冻结首行和首列的,只要你按照图示上的标示和数字一步步操作,欢迎大家来到学习。Exce…

jQuery Pagination分页插件_动力节

jQuery Pagination分页插件_动力节

分页,节点,插件,学院,动力,插件简介?此jQuery插件为Ajax分页插件,一次性加载,故分页切换时无刷新与延迟,如果数据量较大不建议用此方法,因为加载会比较慢。?原插件CSS不太合理,使用浮动,故无法方便实现左右方向的定位,且未清除浮动,在中文修改版中…

WPS表格中文字如何设置左右和上下

WPS表格中文字如何设置左右和上下

文字,方法,设置,表格,如何设置,  它在文字处理软件市场上拥有统治地位。WPS软件不仅仅是关于文字那么简单,下面我们一起学习它的功能吧。WPS表格中文字设置左右和上下居中的方法表格打开Word文档,在菜单栏中选择&ldquo;插入&rdquo;,点击&ldq…

Angular使用Md5加密的解决方法

Angular使用Md5加密的解决方法

解决方法,加密,电脑软件,Angular,一、现象用户登录时需要记住密码的功能,在前端需要对密码进行加密处理,增加安全性二解决1、利用npm(如果没有,先自行安装npm)安装ts-md5npm install ts-md5 --save-dev2、在使用的页面中导入import { Md5 } fr…