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

最新新闻

pyrDown () 与 resize () 核心区别(OpenCV)

pyrDown () 与 resize () 核心区别(OpenCV)

pyrDown () 与 resize () 核心区别(OpenCV) 一、函数基础作用 1. pyrDown 高斯金字塔下采样(图像缩小专用) cpp 运行 void pyrDown(InputArray src, OutputArray dst, const Size& dstsize = Size(), int borderType = BORDER_DEFAULT);固定逻辑: 先对原图做55 高…

2026/7/8 16:43:15 阅读更多 →
NBM7100A芯片在低功耗嵌入式设备中的优化应用

NBM7100A芯片在低功耗嵌入式设备中的优化应用

1. 项目背景与核心挑战 在低功耗嵌入式设备设计中,不可充电的初级电池(如CR2032纽扣电池)面临着两大核心挑战:一是高脉冲电流需求导致的电压骤降,二是电池容量利用率低下。以典型的无线传感器节点为例,休眠…

2026/7/8 16:43:15 阅读更多 →
JMeter压测端口枯竭:Windows系统优化与连接复用实战

JMeter压测端口枯竭:Windows系统优化与连接复用实战

1. 项目概述:当JMeter在Windows上“无路可走” 如果你在Windows上用JMeter做性能压测,跑着跑着突然看到控制台疯狂刷出 java.net.BindException: Address already in use: connect 这样的错误,然后线程就开始大量失败,请求成功率…

2026/7/8 16:41:06 阅读更多 →
3分钟完成Windows和Office智能激活:KMS_VL_ALL_AIO完整使用指南

3分钟完成Windows和Office智能激活:KMS_VL_ALL_AIO完整使用指南

3分钟完成Windows和Office智能激活:KMS_VL_ALL_AIO完整使用指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows激活弹窗而烦恼?Office功能受限影响工作效率…

2026/7/8 16:38:54 阅读更多 →
静态资源路径穿越漏洞剖析:从原理到防御的完整指南

静态资源路径穿越漏洞剖析:从原理到防御的完整指南

1. 项目概述:一次典型的静态资源路径穿越漏洞剖析最近在梳理开源身份认证项目的安全性时,Casdoor 这个项目引起了我的注意。Casdoor 是 Casbin 开源社区推出的一个基于 OAuth 2.0 / OIDC 的中心化单点登录平台,很多开发者会用它来快速构建自己…

2026/7/8 16:38:54 阅读更多 →
SAST工具深度兼容国标实践:统一漏洞度量与DevSecOps集成

SAST工具深度兼容国标实践:统一漏洞度量与DevSecOps集成

1. 项目概述:当SAST工具遇上国标,我们谈的究竟是什么? 在软件安全开发领域,静态应用程序安全测试(SAST)早已不是什么新鲜词。无论是商业化的Fortify、Checkmarx,还是开源的SonarQube、Semgrep&a…

2026/7/8 16:38:54 阅读更多 →

日新闻

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/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

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

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

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

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

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

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

月新闻