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

 2025-01-15  阅读 227  评论 8  点赞 404

摘要:本文实例讲述了php实现的折半查询算法。分享给大家供大家参考,具体如下: 什么是折半查询算法?具体文字描述自己百度。直接上代码: $startindex){ $searchindex = ceil(($endindex - $startindex) / 2); }else if($endindex == $startindex){ $searchindex = $endindex; }e

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

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

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


标签:phpphp教程

评论列表:

  •   weihang666
     发布于 3天前回复该评论
  • 写的很不错,学到了!
显示更多评论

发表评论:

管理员

承接各种程序开发,外贸网站代运营,外贸网站建设等项目
  • 内容2460
  • 积分67666
  • 金币86666

Copyright © 2024 LS'Blog-保定PHP程序员老宋个人博客 Inc. 保留所有权利。 Powered by LS'blog 3.0.3

页面耗时0.0284秒, 内存占用1.94 MB, 访问数据库30次

冀ICP备19034377号