lua 二分查找算法实现。
-- 二分查找迭代版本下划线命名-- param arr 已排序的升序数组-- param target 要查找的目标值-- return 找到返回索引从1开始否则返回nilfunctionbinary_search(arr,target)localleft1localright#arrwhileleftrightdo-- 计算中间位置避免整数溢出Lua 自动处理但习惯写法localmidleftmath.floor((right-left)/2)localmid_valarr[mid]ifmid_valtargetthenreturnmidelseifmid_valtargetthenleftmid1elserightmid-1endendreturnnilend-- 测试代码functionrun_tests()print( 二分查找测试 )-- 测试用例1正常数组目标存在localtest1{1,3,5,7,9,11,13,15}localtarget17localresult1binary_search(test1,target1)print(测试1数组 [1,3,5,7,9,11,13,15] 查找 7 → 索引 ..tostring(result1).. (期望 4))-- 测试用例2目标不存在localtarget28localresult2binary_search(test1,target2)print(测试2查找 8 → 结果 ..tostring(result2).. (期望 nil))-- 测试用例3查找第一个元素localtarget31localresult3binary_search(test1,target3)print(测试3查找 1 → 索引 ..tostring(result3).. (期望 1))-- 测试用例4查找最后一个元素localtarget415localresult4binary_search(test1,target4)print(测试4查找 15 → 索引 ..tostring(result4).. (期望 8))-- 测试用例5空数组localempty{}localtarget510localresult5binary_search(empty,target5)print(测试5空数组查找 10 → 结果 ..tostring(result5).. (期望 nil))-- 测试用例6单个元素数组存在localsingle{42}localtarget642localresult6binary_search(single,target6)print(测试6[42] 查找 42 → 索引 ..tostring(result6).. (期望 1))-- 测试用例7单个元素数组不存在localtarget7100localresult7binary_search(single,target7)print(测试7[42] 查找 100 → 结果 ..tostring(result7).. (期望 nil))-- 测试用例8偶数长度数组localeven_arr{2,4,6,8,10,12}localtarget86localresult8binary_search(even_arr,target8)print(测试8[2,4,6,8,10,12] 查找 6 → 索引 ..tostring(result8).. (期望 3))-- 测试用例9奇数长度数组localodd_arr{1,2,3,4,5}localtarget94localresult9binary_search(odd_arr,target9)print(测试9[1,2,3,4,5] 查找 4 → 索引 ..tostring(result9).. (期望 4))-- 测试用例10重复元素二分查找通常返回任意一个匹配的索引这里假设第一个找到的localduplicate_arr{1,2,2,2,3,4}localtarget102localresult10binary_search(duplicate_arr,target10)print(测试10[1,2,2,2,3,4] 查找 2 → 索引 ..tostring(result10).. (可能是2,3,4中的某一个这里实际是..tostring(result10)..))end-- 运行测试run_tests()

相关新闻

Lua二分查找算法实现及与标量函数对比。

Lua二分查找算法实现及与标量函数对比。

测试目标存在时的测试 数组大小 线性平均时间(s) 二分平均时间(s) 速度比(线性/二分) 10 0.018674 0.019905 0.94 20 0.029383 0.027400 1.07 50 0.060307 0.032418 1.86 100 0.110654 0.039088 2.83 200 0.210350 0.044579 4.72 500 0.517596 0.051270 10.…

2026/7/6 8:31:10 阅读更多 →
HPE推出面向大规模AI架构的最新Juniper路由器

HPE推出面向大规模AI架构的最新Juniper路由器

HPE公司正式发布了两个全新的路由器家族,旨在帮助客户构建支持大规模AI架构、分布式云环境和数据中心互连(DCI)所需的基础设施。在即将到来的2026年世界移动通信大会上,该厂商将介绍其核心Juniper PTX系列路由器的新增成员:高端Juniper PTX12…

2026/7/8 7:28:11 阅读更多 →
受够了低效的代码审查?我用 LangGraph 打造了一款 AI 代码审查神器,自动拦截 SQL 注入(开源)

受够了低效的代码审查?我用 LangGraph 打造了一款 AI 代码审查神器,自动拦截 SQL 注入(开源)

摘要:团队代码审查耗时太长?漏掉硬编码密钥导致安全事故?本文分享一款基于 LangChain LangGraph 的自动化 CodeReview Agent,支持 6 种大模型(含国产),能精准识别高风险代码并给出修复建议。内…

2026/7/7 20:15:17 阅读更多 →

最新新闻

ADP5350与STM32F205RB嵌入式电源管理方案解析

ADP5350与STM32F205RB嵌入式电源管理方案解析

1. 为什么选择ADP5350与STM32F205RB组合? 在嵌入式系统设计中,电源管理一直是决定产品可靠性的关键因素。ADP5350作为ADI公司推出的高级电源管理IC(PMIC),其最大特点在于集成了完整的电池管理功能与多路高效DC-DC转换器…

2026/7/8 16:00:08 阅读更多 →
Telegram AI Bot自动化实战:5步用Make搭建业务工作台

Telegram AI Bot自动化实战:5步用Make搭建业务工作台

1. 项目概述:为什么 Telegram 不该只是个聊天工具? Telegram AI Bot 教程 —— 别再只会建群,5步把 TG 变成你的自动化工作台。这句话不是营销话术,而是我过去18个月在真实业务场景中反复验证过的结论。我服务过7家中小团队&#…

2026/7/8 16:00:08 阅读更多 →
红杉会议全场景落地医疗行业,构建院内+医联体一体化视讯协同体系

红杉会议全场景落地医疗行业,构建院内+医联体一体化视讯协同体系

摘要随着《“健康中国2030”规划纲要》、紧密型县域医共体建设政策持续落地,远程医疗、院内无纸化协同、跨院资源下沉成为医院数字化转型刚需。传统医疗沟通模式存在院内科室沟通低效、跨院区联动困难、医联体远程协同画质差、晨会/会诊纪要人工整理繁琐、医疗监控现…

2026/7/8 16:00:08 阅读更多 →
MySQL 8.0的自增主键持久化特性

MySQL 8.0的自增主键持久化特性

MySQL 8.0 的 AUTO_INCREMENT 值为什么重启后不丢因为 InnoDB 把当前自增计数器的值(不是“下一个值”,而是已分配过的最大值)作为元数据,随每次 INSERT 或显式 ALTER TABLE ... AUTO_INCREMENT N 操作,一并写入 redo…

2026/7/8 15:58:06 阅读更多 →
数学建模国赛C题 2023:Python 实现 3 大问题完整求解流程与代码解析

数学建模国赛C题 2023:Python 实现 3 大问题完整求解流程与代码解析

数学建模国赛C题 2023:Python 实现 3 大问题完整求解流程与代码解析在生鲜商超的日常运营中,蔬菜类商品的补货决策一直是个令人头疼的问题。凌晨补货时,商家既看不到当天的具体单品,也不知道最终售价,却要在这种情况下…

2026/7/8 15:58:06 阅读更多 →
NBM7100A与PIC24FV32KA304优化不可充电电池寿命方案

NBM7100A与PIC24FV32KA304优化不可充电电池寿命方案

1. 不可充电电池的寿命挑战与解决方案概述在低功耗物联网设备和便携式电子设备中,不可充电的初级电池(如锂锰纽扣电池)面临着严峻的寿命挑战。这类电池在提供突发大电流时会出现显著的电压下降,导致系统过早判断电池耗尽而停止工作…

2026/7/8 15:58:06 阅读更多 →

日新闻

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: …

2026/7/8 0:00:48 阅读更多 →
MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N1 到批处理的全路径 一、从"功能正确"到"性能可接受"——MyBatis 批量操作的三段式进化 MyBatis 在日常增删改查场景中几乎是无感的——实体映射直观、SQL 控制灵活。但当数据量从千级上升到十万级、百万级,许…

2026/7/8 0:00:48 阅读更多 →
工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

1. 工业负载控制方案概述在工业自动化、电机驱动和照明控制等高需求场景中,可靠地控制电感和电阻负载是核心挑战之一。TPD2015FN作为东芝的8通道高端智能功率开关IC,配合PIC18F45K22微控制器,能够构建一套稳定、高效的负载控制系统。这套组合…

2026/7/8 0:02:48 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻