当前位置: 首页 > 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 基于端口的虚拟…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...