JAVA-数据结构与算法
时间复杂度1. 时间复杂度概念时间复杂度的定义在计算机科学中算法的时间复杂度是⼀个数学函数它定量描述了该算法的运行时间。⼀个算法所花费的时间与其中语句的执行次数成正比例算法中的 基本操作的执行次数为算法的时间复杂度。2. 推到大O阶方法⽤常数1取代运行时间中的所有加法常数在修改后的运行次数函数中只保留最高阶项如果最高阶项存在且不是1则去除与这个项目相乘的常数。得到的结果就是大O阶3. 常见时间复杂度计算举例实例 1多重循环voidfunc1(intN){intcount0;for(inti0;iN;i){for(intj0;jN;j){count;}}for(intk0;k2*N;k){count;}intM10;while((M--)0){count;}System.out.println(count);}分析该方法的基本操作执行次数为F ( N ) N 2 2 ∗ N 10 F(N) N^2 2*N 10F(N)N22∗N10时间复杂度保留最高阶项后为O ( N 2 ) O(N^2)O(N2)实例 2单一输入规模的独立循环voidfunc2(intN){intcount0;for(intk0;k2*N;k){count;}intM10;while((M--)0){count;}System.out.println(count);}分析基本操作执行了2 N 10 2N 102N10次时间复杂度通过推导大O阶方法去掉相乘的常数后为O ( N ) O(N)O(N)实例 3多输入规模的独立循环voidfunc3(intN,intM){intcount0;for(intk0;kM;k){count;}for(intk0;kN;k){count;}System.out.println(count);}分析基本操作执行了M N M NMN次因为有两个未知数M MM和N NN时间复杂度O ( N M ) O(NM)O(NM)实例 4常数次循环voidfunc4(intN){intcount0;for(intk0;k100;k){count;}System.out.println(count);}分析基本操作执行了 100 次时间复杂度用常数1取代所有加法常数时间复杂度为O ( 1 ) O(1)O(1)实例 5冒泡排序voidbubbleSort(int[]array){for(intendarray.length;end0;end--){booleansortedtrue;for(inti1;iend;i){if(array[i-1]array[i]){Swap(array,i-1,i);sortedfalse;}}if(sortedtrue){break;}}}分析基本操作最好情况执行N NN次最坏情况执行了( N ∗ ( N − 1 ) ) / 2 (N*(N-1))/2(N∗(N−1))/2次时间复杂度实际中一般关注算法的最坏运行情况时间复杂度为O ( N 2 ) O(N^2)O(N2)实例 6二分查找intbinarySearch(int[]array,intvalue){intbegin0;intendarray.length-1;while(beginend){intmidbegin((end-begin)/2);if(array[mid]value)beginmid1;elseif(array[mid]value)endmid-1;elsereturnmid;}return-1;}分析基本操作最好情况执行 1 次因为每次二分查找排除掉一半的不适合值最坏情况执行log ⁡ N \log NlogN次时间复杂度O ( log ⁡ N ) O(\log N)O(logN)实例 7阶乘递归longfactorial(intN){returnN2?N:factorial(N-1)*N;}分析基本操作递归了N NN次时间复杂度O ( N ) O(N)O(N)实例 8斐波那契递归intfibonacci(intN){returnN2?N:fibonacci(N-1)fibonacci(N-2);}分析基本操作递归了2 N 2^N2N次时间复杂度O ( 2 N ) O(2^N)O(2N)空间复杂度1.概念空间复杂度是对⼀个算法在运⾏过程中临时占⽤存储空间⼤⼩的量度。空间复杂度计算规则基 本跟时间复杂度类似也使⽤⼤O渐进表⽰法。2.代码示例实例 1冒泡排序voidbubbleSort(int[]array){for(intendarray.length;end0;end--){booleansortedtrue;for(inti1;iend;i){if(array[i-1]array[i]){Swap(array,i-1,i);sortedfalse;}}if(sortedtrue){break;}}}空间复杂度分析由于算法在运行过程中只使用了常数个额外空间所以空间复杂度为O ( 1 ) O(1)O(1)实例 2动态数组解斐波那契数列int[]fibonacci(intn){long[]fibArraynewlong[n1];fibArray[0]0;fibArray[1]1;for(inti2;in;i){fibArray[i]fibArray[i-1]fibArray[i-2];}returnfibArray;// 注原返回类型与数组类型应一致此处保留原文档意图}空间复杂度分析因为算法内部动态开辟了N NN个空间所以空间复杂度为O ( N ) O(N)O(N)实例 3阶乘递归longfactorial(intN){returnN2?N:factorial(N-1)*N;}空间复杂度分析该算法递归调用了N NN次开辟了N NN个栈帧且每个栈帧使用了常数个空间因此空间复杂度为O ( N ) O(N)O(N)

相关新闻

Unity VR物理碰撞优化:Pico设备性能与真实感平衡实战

Unity VR物理碰撞优化:Pico设备性能与真实感平衡实战

1. 项目概述:为什么VR中的物理碰撞如此棘手?如果你正在用Unity为Pico VR设备开发应用,尤其是涉及到需要抓取、投掷、交互的沉浸式体验,那么“物理碰撞”这个技术点,大概率已经让你头疼过了。这不仅仅是让两个物体不要穿…

2026/7/11 3:11:48 阅读更多 →
Codex移动端跨设备协同:AI编程助手实时监控与远程控制

Codex移动端跨设备协同:AI编程助手实时监控与远程控制

Codex是OpenAI推出的AI编程助手,现在通过ChatGPT移动应用实现了跨设备协同工作能力。这个项目最核心的价值在于让开发者能够在手机上实时查看和控制远程环境中的Codex任务执行状态,包括屏幕镜像、终端输出、测试结果等实时反馈。从技术实现角度看&#x…

2026/7/11 3:11:48 阅读更多 →
iOS激活锁绕过终极指南:使用applera1n免费解锁A9-A11设备

iOS激活锁绕过终极指南:使用applera1n免费解锁A9-A11设备

iOS激活锁绕过终极指南:使用applera1n免费解锁A9-A11设备 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 你是否曾经遇到过这样的情况:购买了一台二手iPhone,却因为…

2026/7/11 3:09:48 阅读更多 →

最新新闻

HART 协议 FSK 信号实测:在 4-20mA 回路上叠加 0.5mA 数字信号的 3 种干扰排查

HART 协议 FSK 信号实测:在 4-20mA 回路上叠加 0.5mA 数字信号的 3 种干扰排查

HART协议FSK信号干扰排查实战:从波形分析到现场解决方案在工业自动化现场,HART协议作为4-20mA模拟信号与数字通信共存的混合通信标准,其稳定性直接影响着生产过程的可靠运行。然而,当现场出现通信中断、数据丢包或信号失真时&…

2026/7/11 4:06:04 阅读更多 →
TPA3128D2音频放大器与PIC18LF25K80微控制器的Hi-Fi系统设计

TPA3128D2音频放大器与PIC18LF25K80微控制器的Hi-Fi系统设计

1. TPA3128D2 音频放大器深度解析 作为一名音响发烧友和电子工程师,我最近被德州仪器(TI)的TPA3128D2 Class-D音频放大器芯片彻底征服了。这款芯片在便携式音响系统设计中展现了惊人的性能,特别是在功率效率和音质表现方面。让我们…

2026/7/11 4:06:04 阅读更多 →
R环境搭建避坑指南:从set.seed到plot的可复现统计模拟

R环境搭建避坑指南:从set.seed到plot的可复现统计模拟

1. 这不是“装个软件”那么简单:为什么Day4的R安装课决定你后续三个月的数据分析效率很多人看到“day4- 安装R及Rstudio和初步使用”这个标题,第一反应是:“哦,就是下载两个安装包,点下一步的事”。我带过27期数据分析…

2026/7/11 4:06:04 阅读更多 →
网络安全自查实战:基于等保2.0的8大核心模块检查清单与3类常见问题

网络安全自查实战:基于等保2.0的8大核心模块检查清单与3类常见问题

网络安全合规实战手册:基于等保2.0的8大模块自查清单与资源优化方案当某金融机构因未及时修复高危漏洞导致数据泄露时,其股价单日下跌12%;而另一家完成等保三级认证的医疗平台,在遭遇同类攻击时因完备的防护体系实现零数据丢失——…

2026/7/11 4:00:02 阅读更多 →
Cocos2d-x跑酷游戏开发实战:从架构设计到商业化的完整指南

Cocos2d-x跑酷游戏开发实战:从架构设计到商业化的完整指南

1. 项目概述:从源码到盈利的跑酷游戏之旅最近几年,独立游戏开发的门槛肉眼可见地降低了,但“从零到一”做出一个能跑起来的游戏,和“从一到一百”做出一个能赚钱的游戏,中间隔着的可不止是代码。很多开发者&#xff0c…

2026/7/11 3:58:01 阅读更多 →
Langchain【4】--- RAG检索增强生成

Langchain【4】--- RAG检索增强生成

文章目录前言一、深度解惑:为什么RAG是私有知识问答的最优解?1.1 原生大模型的四大致命短板(业务落地必看)1.2 RAG核心逻辑(通俗类比)1.3 三大定制方案终极选型对比(新手必收藏)1.4 …

2026/7/11 3:58:01 阅读更多 →

日新闻

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux 想要让AI图像生成真正听从你的指挥吗&…

2026/7/11 0:02:12 阅读更多 →
PIC18F45K42驱动EPT-14A4005P压电蜂鸣器方案详解

PIC18F45K42驱动EPT-14A4005P压电蜂鸣器方案详解

1. 项目背景与核心需求 在工业控制、安防系统和智能家居等领域,可靠的声音警报系统是不可或缺的基础组件。传统蜂鸣器存在音量不足、音质模糊等问题,而基于压电陶瓷技术的EPT-14A4005P蜂鸣器配合PIC18F45K42微控制器,能够构建一套适应性强、音…

2026/7/11 0:04:12 阅读更多 →
大模型推理中的算子融合优化:LayerNorm + Attention 的 CUDA Kernel 手写与验证

大模型推理中的算子融合优化:LayerNorm + Attention 的 CUDA Kernel 手写与验证

大模型推理中的算子融合优化:LayerNorm Attention 的 CUDA Kernel 手写与验证 一、GPU 利用率 30%:分开的算子吃掉所有带宽 推理服务的 GPU 利用率监测显示一个反直觉的现象:计算核心(SM)利用率不到 30%,但…

2026/7/11 0:04:12 阅读更多 →

周新闻

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

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

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

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

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

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

2026/7/9 21:41:05 阅读更多 →

月新闻