Lua二分查找算法实现及与标量函数对比。
测试目标存在时的测试数组大小 线性平均时间(s)二分平均时间(s)速度比(线性/二分)100.0186740.0199050.94200.0293830.0274001.07500.0603070.0324181.861000.1106540.0390882.832000.2103500.0445794.725000.5175960.05127010.1010001.0342850.05740018.0220002.1101800.06327733.35Time limit exceeded源代码-- 线性查找localfunctionlinear_search(arr,target)fori1,#arrdoifarr[i]targetthenreturniendendreturnnilend-- 二分查找迭代使用 // 整数除法localfunctionbinary_search(arr,target)localleft,right1,#arrwhileleftrightdolocalmid(leftright)//2-- Lua 5.3 整数除法localmid_valarr[mid]ifmid_valtargetthenreturnmidelseifmid_valtargetthenleftmid1elserightmid-1endendreturnnilend-- 生成有序数组localfunctiongenerate_sorted_array(size)localarr{}fori1,sizedoarr[i]i*2-- 生成步长为2的递增序列方便测试存在/不存在endreturnarrend-- 基准测试函数-- param sizes: 要测试的数组大小列表-- param trials_per_size: 每个大小下的查找次数用于平均-- param use_existing_target: true 表示目标值存在取数组中间值false 表示目标值不存在localfunctionbenchmark(sizes,trials_per_size,use_existing_target)print(数组大小\t线性平均时间(s)\t二分平均时间(s)\t速度比(线性/二分))for_,sizeinipairs(sizes)dolocalarrgenerate_sorted_array(size)localtargetifuse_existing_targetthentargetarr[math.floor(size/2)1]-- 存在元素elsetargetsize*21-- 不存在元素end-- 测试线性查找localstartos.clock()for_1,trials_per_sizedolinear_search(arr,target)endlocallinear_timeos.clock()-start-- 测试二分查找localstartos.clock()for_1,trials_per_sizedobinary_search(arr,target)endlocalbinary_timeos.clock()-startlocalratiolinear_time/binary_timeprint(string.format(%d\t\t%.6f\t\t%.6f\t\t%.2f,size,linear_time,binary_time,ratio))endend-- 定义要测试的数组大小对数增长localsizes{10,20,50,100,200,500,1000,2000,5000,10000,20000,50000,100000}localtrials_per_size100000-- 每个大小重复查找次数保证统计稳定性print( 目标存在时的测试 )benchmark(sizes,trials_per_size,true)print(\n 目标不存在时的测试 )benchmark(sizes,trials_per_size,false)

相关新闻

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 阅读更多 →
Python语言基础学习之Python基础之列表介绍和循环遍历

Python语言基础学习之Python基础之列表介绍和循环遍历

今天给大家分享一些Python基础 (列表基础和循环遍历介绍),一起来看看吧~ 一、列表介绍 想一想: 字符串可以用来存储一串信息,那么想一想,怎样存储所有同学的名字呢?定义100个变量,每个变量存放一个学生的姓名可行吗?…

2026/7/3 19:24:33 阅读更多 →

最新新闻

Product Hunt 当成冷启动:独立开发者真正要找的不是流量,而是对的人

Product Hunt 当成冷启动:独立开发者真正要找的不是流量,而是对的人

上榜的兴奋感,很容易让人误判产品Product Hunt 最容易制造的一种错觉是:发布结果看起来很像市场答案。如果产品冲上榜单,创始人会觉得自己可能做对了。 如果产品冷冷清清,没人点赞,没人评论,又很容易怀疑是…

2026/7/8 16:06:09 阅读更多 →
如何用免费2D光学仿真工具轻松掌握几何光学原理

如何用免费2D光学仿真工具轻松掌握几何光学原理

如何用免费2D光学仿真工具轻松掌握几何光学原理 【免费下载链接】ray-optics A web app for creating and simulating 2D geometric optical scenes, with a gallery of (interactive) demos. 项目地址: https://gitcode.com/gh_mirrors/ra/ray-optics Ray Optics Simul…

2026/7/8 16:04:09 阅读更多 →
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 阅读更多 →

日新闻

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 阅读更多 →

月新闻