当前位置: 首页 > news >正文

55、PHP实现插入排序、二分查找

题目: PHP实现插入排序

描述:

  • 思路:选择一个带插入的元素(假设从第一个开始),分别和已经插入有顺序
  • 的元素比较,如果要插入元素比比较元素小,则位置交换
function insertSort($arr){if(!is_array($arr)) return false;//外层循环插入次数for($i=1;$i<count($arr);$i++){$tmp = $arr[$i];//要插入的元素//内层循环比较和插入for($j=$i-1;$j>=0;$j--){//发现要插入的元素小if($tmp < $arr[$j]){//将后边的元素和前面的元素交换$arr[$j+1]=$arr[$j];//把前面的数设置为当前需要交换的数$arr[$j] = $tmp;}}}return $arr;
}

题目: 二分查找

描述:


  • 思路分析:数组中间的值floor((low+top)/2)

  • 先取数组中间的值floor((low+top)/2)然后通过与所需查找的数字进行比较,
  • 若比中间值大则将首值替换为中间位置下一个位置,继续第一步的操作;
  • 若比中间值小,则将尾值替换为中间位置上一个位置,继续第一步操作
  • 重复第二步操作直至找出目标数字
/*** 非递归版 二分查找** @param array $container* @param       $search* @return int|string*/
function BinaryQuery(array $container, $search)
{$top = count($container);$low = 0;while ($low <= $top) {$mid = intval(floor(($low + $top) / 2));if (!isset($container[$mid])) {return '没找着哦';}if ($container[$mid] == $search) {return $mid;}$container[$mid] < $search && $low = $mid + 1;$container[$mid] > $search && $top = $mid - 1;}
}
/*** 递归版 二分查找** @param array  $container* @param        $search* @param int    $low* @param string $top* @return int|string*/
function BinaryQueryRecursive(array $container, $search, $low = 0, $top = 'default')
{$top == 'default' && $top = count($container);if ($low <= $top) {$mid = intval(floor($low + $top) / 2);if (!isset($container[$mid])) {return '没找着哦';}if ($container[$mid] == $search) {return $mid;}if ($container[$mid] < $search) {return BinaryQueryRecursive($container, $search, $mid + 1, $top);} else {return BinaryQueryRecursive($container, $search, $low, $mid - 1);}}
}
http://www.lryc.cn/news/417111.html

相关文章:

  • [Git][分支设计规范]详细讲解
  • c#中winfrom需要了解的
  • 操作系统03:调度算法和文件系统
  • 大量中国高清地图,必须收藏!!
  • 无线领夹麦克风哪个品牌好,2024年收音麦哪个品牌好一点
  • 如何解决.NET8 类库Debug时,Debug文件夹中不包含Packages中引入的文件
  • 域名安全详解
  • 使用gstreamer命令行解析RTSP流
  • 如何基于离线包中“事件热点”进行二次开发
  • 使用继电器实现门电路(1)常用门电路的简化实现
  • 程序员常用单词分类
  • c语言11天笔记
  • 【C++刷题】优选算法——贪心第三辑
  • 9.2 grafana 上导入模板看图并讲解告警
  • python实现自动回复消息
  • Mysql 脚本转换为drawio ER 脚本
  • 基于babylonjs的小游戏 跳一跳
  • 移动端下拉加载更多(h5,小程序)
  • Linux安全与高级应用(二)Linux Web服务器的安全配置与高级应用
  • 关于React.createContext全局注入的一些记录
  • 在S/4HANA OP 1511中激活嵌入式分析的基本配置
  • 好的提交 VS. 坏的提交 :Git 的最佳实践
  • MySQL第4讲--图像化界面工具DataGrip介绍
  • Curl工具小记
  • 【C#语音文字互转】C#语音转文字(方法一)
  • 基于Linux系统下的在线手机商城
  • Apache Kafka 事务详解
  • Go语言 结构体
  • 数据结构(邓俊辉)学习笔记】词典 03—— 排解冲突(1)
  • HTML5+CSS3-HTML5入门