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

ops/2024/10/11 5:26:22/

题目: 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)然后通过与所需查找的数字进行比较,
  • 若比中间值大则将首值替换为中间位置下一个位置,继续第一步的操作;
  • 若比中间值小,则将尾值替换为中间位置上一个位置,继续第一步操作
  • 重复第二步操作直至找出目标数字
php">/*** 非递归版 二分查找** @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.ppmy.cn/ops/90182.html

相关文章

codeforces(2024年8月7日)

交互式问题要关闭ios&#xff0c;要不然完蛋&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01…

【Rust光年纪】提升Rust语言开发效率:错误处理和日志记录库大揭秘

提升Rust应用稳定性与可维护性&#xff1a;6款优秀错误处理与日志记录库全面解析 前言 在Rust语言开发中&#xff0c;错误处理和日志记录是非常重要的方面。为了更好地处理错误和记录应用程序的运行状态&#xff0c;有许多优秀的库可以使用。本文将介绍一些用于Rust语言的错误…

【C++】超越用户定义类型的边界—类层次结构与灵活性

C中的类层次结构与灵活性&#xff1a;超越用户定义类型的边界 一、引言&#xff1a;用户定义类型的局限性二、类层次结构的基本概念三、利用类层次结构解决灵活性问题3.1 定义基类3.2 派生子类3.3 多态性与灵活性 四、总结 在C这片编程的广阔天地里&#xff0c;用户定义类型&am…

QT学生管理系统 开发文档

目录 第一章 UI界面设计与开发 登录界面 主界面 UI美化 第二章 数据库设计与开发 数据库设计 连接数据库 数据库功能设计 sql语句设计 查询所有学生数量 查询第几页学生数据 删除学生 修改学生信息 清空学生表 添加单个用户 删除单个用户 修改用户权限 查询所有用户…

计算机是如何工作的

发展史 Java 最初诞生的时候&#xff0c;适用于“嵌入式开发” 后来给网页网页开发逻辑&#xff08;Java 在进行前端开发&#xff09;&#xff0c;迎来第一波巅峰 后来被微软打压后寻出路&#xff0c;开始做服务器开发&#xff08;后端开发&#xff09;和嵌入式开发&#xff…

python-分享篇-英文短文自动分词写入文本文件

文章目录 准备代码效果 准备 代码 import string f open(./data/split.txt) sf.read() str1s.title() print(str1) print("".join([s for s in str1.splitlines(True) if s.strip()])) list1 str1.split() # 采用默认分隔符进行分割 #字符串列表去重 l1list(set(l…

.Net6通过依赖注入和服务注册的方式管理和连接Oracle数据库

使用到的Nuget包和技术&#xff1a; 1.ODBC&#xff08;System.Data.Odbc&#xff09;&#xff1a;用于数据库的连接&#xff0c;支持操作不同类型的数据库。 2. Dapper&#xff1a;一个轻量级的ORM库&#xff0c;用于访问数据库进行数据的增删改查等操作。 3. Oracle.Managed…

Istio 金丝雀发布

转载&#xff1a;备考ICA-Istio 金丝雀实验4 环境清理 kubectl delete gw/helloworld-gateway vs/helloworld dr/helloworld-destination #测试 kubectl get svc,pods for i in {1..10};do curl $(kubectl get svc helloworld|grep helloworld|awk {print $3":"$5}|a…