当前位置: 首页 > 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);}}
}

相关文章:

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

题目&#xff1a; PHP实现插入排序 描述&#xff1a; 思路:选择一个带插入的元素(假设从第一个开始),分别和已经插入有顺序的元素比较,如果要插入元素比比较元素小,则位置交换 function insertSort($arr){if(!is_array($arr)) return false;//外层循环插入次数for($i1;$i<…...

[Git][分支设计规范]详细讲解

目录 0.概览1.master分支2.release分支3.develop分支4.feature分支5.hotfix分支 0.概览 以下是常用的分支和环境的搭配&#xff0c;可视情况而定不同的策略 分支名称适用环境master主分支生产环境release预发布分支预发布/测试环境develop开发分支开发环境feature需求开发分支本…...

c#中winfrom需要了解的

如何用代码实现label1的字体大小 方法1&#xff1a;在设计视图中设置 打开你的Windows Forms项目。 在设计视图中&#xff0c;选中你想要更改字体大小的Label控件。 在属性窗口中&#xff0c;找到Font属性&#xff0c;点击旁边的省略号(...)。 在弹出的字体对话框中&#x…...

操作系统03:调度算法和文件系统

文章目录 调度算法进程调度算法先来先服务调度算法最短作业优先调度算法高响应比优先调度算法时间片轮转调度算法最高优先级调度算法 内存页面置换算法最佳页面置换算法&#xff08;OPT&#xff09;先进先出置换算法&#xff08;FIFO&#xff09;最近最久未使用的置换算法&…...

大量中国高清地图,必须收藏!!

1、中国人口密度 2、中国干湿区 3、中国温度带和干湿状况 4、中国气温分布 5、中国高陆状况 6、国家级高新技术产业开发区 7、中国工业布局的变化 8、中国旱灾 9、中国常年河与时令河 10、中国科斯塔地貌分布图 11、中国泥石流、滑坡崩塌灾害分布 12、中国森林和主要牧区分布图…...

无线领夹麦克风哪个品牌好,2024年收音麦哪个品牌好一点

在自媒体的浪潮中&#xff0c;内容创作者对于高质量音频的需求日益增长&#xff0c;这直接推动了无线领夹麦克风的兴起。过去&#xff0c;创作者们可能更倾向于使用传统的有线麦克风&#xff0c;但随着技术的进步和市场的变化&#xff0c;无线领夹麦克风以其便携性和灵活性的优…...

如何解决.NET8 类库Debug时,Debug文件夹中不包含Packages中引入的文件

最近在开发中使用了.NET8 Razor类库项目&#xff0c;但是惊讶的发现Debug时&#xff0c;Debug文件夹中不包含Packages中引入的文件&#xff0c;本以为是非常小的问题&#xff0c;但是被困住了竟然足足4个小时。 其实它也本就是个非常非常小的问题…… 只需引入<CopyLocalL…...

域名安全详解

域名安全是网络安全的重要组成部分,涉及多个方面。以下是域名安全的详细介绍: 1. 域名劫持防护 域名劫持是指攻击者通过各种手段,将用户访问的域名解析到非法IP地址上。 防护措施: 使用DNSSEC(域名系统安全扩展)定期监控域名解析记录选择可靠的域名注册商和DNS服务提供…...

使用gstreamer命令行解析RTSP流

1、解析成图片&#xff1a; gst-launch-1.0 rtspsrc locationrtsp://xxxx protocolstcp ! rtph264depay ! h264parse ! queue ! avdec_h264 ! videoconvert ! videorate ! videoscale ! videoconvert ! capsfilter capsvideo/x-raw,formatI420,width640,height480,framerate30…...

如何基于离线包中“事件热点”进行二次开发

720漫游支持基于作品离线包中的自定义按钮/热点-事件进行二次开发来实现与自己业务相关的扩展功能。 开发者可以基于离线包二次开发自定义设置点击热点图标需要执行什么操作&#xff1f;比如打开实时监控画面弹窗&#xff0c;调用自己后台的数据并弹窗显示等。 操作流程&…...

使用继电器实现门电路(1)常用门电路的简化实现

非门INC 常闭x1 反向输入信号 与门AND 常开x1 当A和B都为1时&#xff0c;O才为1&#xff0c;否则O为0。 或门OR 常开x1 当A和B中任意一个为1时&#xff0c;O为1&#xff0c;只有当A和B都为0时&#xff0c;O才为0。 或非门NOR 当A和B中任意一个为1时&#xff0c;O为0&…...

程序员常用单词分类

程序员在编程、软件开发、系统维护等工作中&#xff0c;会频繁使用到一系列特定的单词和术语。这些单词可以根据其功能、用途或所属领域进行分类。以下是一些常见的分类及其示例单词&#xff1a; 1. 数据类型与变量 数据类型&#xff1a;整型&#xff08;Integer&#xff09;…...

c语言11天笔记

函数的概述 函数&#xff1a;实现一定功能的&#xff0c;独立的代码模块。我们的函数一定是先定义&#xff0c;后使用。 使用函数的优势&#xff1a; 1. 我们可以通过函数提供功能给别人使用。当然我们也可以使用别人提供的函数&#xff0c;减少代码量。 2. 借助函数可以减…...

【C++刷题】优选算法——贪心第三辑

坏了的计算器 int brokenCalc(int startValue, int target) {int step 0;while (target > startValue) {if (target % 2 0) target / 2;else target 1;step;}return step startValue - target; }合并区间 区间问题&#xff0c;先排序 vector<vector<int>>…...

9.2 grafana 上导入模板看图并讲解告警

本节重点介绍 : 添加到prometheus采集配置中grafana 上导入process-exporter dashboard重点指标讲解 添加到prometheus采集配置中 - job_name: process-exporterhonor_timestamps: truescrape_interval: 15sscrape_timeout: 10smetrics_path: /metricsscheme: httpstatic_con…...

python实现自动回复消息

本文使用创作助手。 下面是一个使用uiautomation库实现自动回复QQ消息的示例代码&#xff1a; import time import uiautomation as autodef auto_reply():# 打开QQauto.uiautomationhelper.ShellExecute(r"C:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe&quo…...

Mysql 脚本转换为drawio ER 脚本

Navicat 导出数据库脚本 通过代码转换脚本 import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern;/*** SQL 脚本转换为 drawio ER 脚本*/ pu…...

基于babylonjs的小游戏 跳一跳

源码地址...

移动端下拉加载更多(h5,小程序)

1.h5,使用原生方式监听页面滚动下拉加载更多 <template><div></div> </template><script> export default {data() {return {loadflag: true,maxpages: 0, //最大页码currentpage: 0, //当前页listData: [],config: {page: 1,pageSize: 15,tota…...

Linux安全与高级应用(二)Linux Web服务器的安全配置与高级应用

文章目录 Linux Web服务器的安全配置与高级应用一、HTTPD服务的基本配置1.1 HTTPD服务简介1.2 HTTPD配置文件 二、Web服务的访问控制2.1 客户端地址限制2.2 用户授权限制 三、构建虚拟Web主机3.1 虚拟主机简介3.2 基于域名的虚拟主机3.3 基于IP地址的虚拟主机3.4 基于端口的虚拟…...

告别理想模型!手把手教你用ADS导入村田DesignKits,让仿真贴近真实PCB

告别理想模型&#xff01;手把手教你用ADS导入村田DesignKits&#xff0c;让仿真贴近真实PCB 射频工程师小张最近遇到了一个棘手的问题&#xff1a;他在ADS中精心设计的低通滤波器&#xff0c;仿真结果完美符合指标&#xff0c;但实际打板测试时性能却大打折扣。这个困扰无数硬…...

三自由度车辆仿真融合Matlab与carsim,融合EKF/UKF与积分法测量质心侧偏角、纵向...

matlab和carsim联合仿真&#xff0c;基于三自由度车辆模型&#xff0c;搭建ekf或者ukf与积分法融合的用于测量质心侧偏角&#xff0c;纵向速度&#xff0c;横摆角速度。清晨六点半的实验室键盘声格外清脆&#xff0c;我盯着屏幕里那辆在CarSim里蛇形走位的虚拟高尔夫&#xff0…...

Matlab串口通信上位机开发:从零搭建实时数据采集系统(附完整代码)

Matlab串口通信上位机开发实战&#xff1a;从零构建工业级数据采集系统 在工业自动化、物联网设备调试和科研实验数据采集领域&#xff0c;串口通信作为最基础也最可靠的数据传输方式&#xff0c;至今仍发挥着不可替代的作用。Matlab凭借其强大的数值计算能力和丰富的可视化工具…...

C# 面试高频题:装箱和拆箱是如何影响性能的?下

OCP原则 ocp指开闭原则&#xff0c;对扩展开放&#xff0c;对修改关闭。是七大原则中最基本的一个原则。 依赖倒置原则&#xff08;DIP&#xff09; 什么是依赖倒置原则 核心是面向接口编程、面向抽象编程&#xff0c; 不是面向具体编程。 依赖倒置原则的目的 降低耦合度&#…...

JIT缓存命中率低于41%?Python 3.14三大隐式开销源深度溯源,立即修复可提升吞吐量2.1倍

第一章&#xff1a;Python 3.14 JIT 编译器性能调优概览Python 3.14 引入了实验性内置 JIT&#xff08;Just-In-Time&#xff09;编译器&#xff0c;基于 LLVM 后端实现&#xff0c;旨在对热点函数进行动态编译优化&#xff0c;显著提升数值计算、循环密集型及递归场景的执行效…...

从PPO到ORPO:LLaMA Factory强化学习算法技术详解

在大语言模型的偏好对齐训练中,算法选择直接影响训练成本和最终效果。LLaMA Factory 支持从经典的 PPO 到最新的 DPO、SimPO、KTO、ORPO 等多种强化学习算法,但它们的原理差异、适用场景和资源开销各不相同。 本文系统梳理五大算法的理论基础、关键公式和工程实现,通过 Onli…...

玩转Python标准库:os与sys常用方法

目录 一、os与sys&#xff1a;Python与操作系统之间的翻译官 二、os模块&#xff1a;文件系统与进程管理 2.1 获取当前工作目录与路径拼接 2.2 创建、删除、重命名文件和目录 2.3 遍历目录&#xff1a;os.walk 2.4 执行系统命令&#xff1a;os.system vs subprocess 2.5…...

Nginx本地缓存

一、前言&#xff1a;为什么需要 Nginx 本地缓存&#xff1f;你是否面临这些痛点&#xff1f;❌ 后端服务压力大&#xff0c;大量重复请求打到应用层❌ 静态资源&#xff08;图片、JS、CSS&#xff09;频繁回源❌ 接口响应慢&#xff0c;用户体验差❌ 后端宕机时&#xff0c;整…...

Windows电脑突然变卡?手把手教你排查Artemis僵尸网络(附注册表修复脚本)

Windows系统异常卡顿&#xff1f;可能是Artemis僵尸网络在作祟 最近电脑突然变得异常缓慢&#xff0c;任务管理器打不开&#xff0c;甚至文件夹选项也消失了&#xff1f;这可能是Artemis僵尸网络在背后捣鬼。作为一名长期与Windows系统打交道的技术顾问&#xff0c;我见过太多用…...

FPGA电力电子控制器设计与验证:Simulink与Modelsim联合仿真buck闭环控制

simulink与modelsim联合仿真buck闭环设计 主电路用simulink搭建&#xff0c;控制电路完全有verilog语言实现&#xff08;包括DPWM,PI补偿器) 适用于验证基于fpga的电力电子变换器控制&#xff0c;由于控制回路完全由verilog语言编写&#xff0c;因此仿真验证通过&#xff0c;可…...