news 2026/8/24 7:59:24

基础--01---算法----概述

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基础--01---算法----概述

什么是算法?

官方解释:

  • 算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法解决问题的策略机制
  • 也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。

算法 + 数据结构 = 程序设计

“Algorithms + Data Structures = Programs”(出自:Pascal之父Nicklaus Wirth)

  • 算法是为了解决实际问题而设计的,
  • 数据结构是算法需要处理的问题载体。

概述:

  • 程序能否快速而高效地完成预定的任务,取决于是否选对了数据结构,而程序是否能清楚而正确地把问题解决,则取决于算法。算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务。

算法目标:

在程序中,我们也可以用不同的算法解决相同的问题,而不同的算法的成本也是不相同的。总体上,一个优秀的算法追求以下两个目标:

  1. 花最少的时间完成需求;
  2. 占用最少的内存空间完成需求;

案例

需求1:计算1到100的和。

  • 第一种解法:
@Testpublicvoidtest01(){intsum=0;intn=100;for(inti=1;i<=n;i++){sum+=i;}System.out.println("sum="+sum);}
  • 第二种解法:
@Testpublicvoidtest01(){intsum=0;intn=100;sum=(n+1)*n/2;System.out.println("sum="+sum);}

解析:



很明显,第二种算法完成需求,花费的时间更少一些。

需求2:计算10的阶乘

  • 第一种解法:递归
@Testpublicvoidtest01(){//测试,计算10的阶乘longresult=fun1(10);System.out.println(result);}//计算n的阶乘publicstaticlongfun1(longn){if(n==1){return1;}returnn*fun1(n-1);}
  • 第二种解法:for循环
@Testpublicvoidtest02(){//测试,计算10的阶乘longresult=fun2(10);System.out.println(result);}//计算n的阶乘publicstaticlongfun2(longn){intresult=1;for(longi=1;i<=n;i++){result*=i;}returnresult;}

解析:

第一种解法:

  • 使用递归完成需求,fun1方法会执行10次,并且第一次执行未完毕,调用第二次执行,第二次执行未完毕,调用第三次执行…最终,最多的时候,需要在栈内存同时开辟10块内存分别执行10个fun1方法

第二种解法:

  • 使用for循环完成需求,fun2方法只会执行一次,最终,只需要在栈内存开辟一块内存执行fun2方法 即可。

很明显,第二种算法完成需求,占用的内存空间更小。

递归通常消耗内存高,因为操作方法需要开辟更多空间

体系图

排序:

查找:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 7:57:54

Unity文件操作全解析:从EditorUtility到跨平台自定义UI实现

1. 项目概述&#xff1a;为什么Unity文件操作值得深究&#xff1f;在Unity开发中&#xff0c;无论是编辑器工具开发、运行时数据管理&#xff0c;还是项目配置导入导出&#xff0c;文件的选择与保存都是一个高频且基础的需求。新手可能会直接想到EditorUtility.OpenFilePanel&a…

作者头像 李华
网站建设 2026/8/24 7:51:28

工业AI研究可审计实验记录系统:从轨迹到证据的范式变革

1. 项目概述&#xff1a;当工业研究遇上“可审计”的实验记录最近和几个在大型化工、材料研发机构做算法落地的朋友聊天&#xff0c;大家不约而同地提到了同一个痛点&#xff1a;实验室里跑出来的AI模型&#xff0c;到了产线上怎么解释&#xff1f;评审会上&#xff0c;面对“为…

作者头像 李华
网站建设 2026/8/24 7:51:01

双非开发者如何构建AI Agent工程化能力:从RAG到LangGraph的实战进阶

最近和几位刚入行的朋友聊起找工作&#xff0c;发现一个很有意思的现象&#xff1a;很多人把“Agent开发”理解成了“会用几个框架”&#xff0c;简历上罗列着LangChain、LangGraph、RAG&#xff0c;但一问到“你做的Agent真正解决了什么业务问题”、“它上线后怎么维护”、“遇…

作者头像 李华
网站建设 2026/8/24 7:49:26

多智能体系统子智能体衍生:动态任务分解与安全协作架构实践

1. 项目概述&#xff1a;当“子代”继承时&#xff0c;多智能体网络中的子智能体衍生最近在折腾多智能体系统时&#xff0c;我反复遇到一个既让人兴奋又让人头疼的现象&#xff1a;一个智能体在执行任务的过程中&#xff0c;会“生”出另一个智能体来帮忙。这听起来有点像科幻电…

作者头像 李华
网站建设 2026/8/24 7:48:10

基于经验本体与LLM的智能需求挖掘:从对话到结构化访谈

1. 项目概述&#xff1a;从对话到面试的智能需求挖掘最近在做一个挺有意思的项目&#xff0c;核心是解决一个老生常谈但又总是做不好的问题&#xff1a;如何从一堆看似杂乱无章的对话里&#xff0c;精准、高效地“挖”出用户的真实需求。我们给这个项目起了个名字&#xff0c;叫…

作者头像 李华
网站建设 2026/8/24 7:46:18

3D高斯泼溅自动重建系统:从环境部署到效果验证全流程指南

这次我们来看一个名为“高斯泼溅3D自动生成系统”的项目。从名字就能看出&#xff0c;它的核心是利用“高斯泼溅”&#xff08;Gaussian Splatting&#xff09;这项前沿技术&#xff0c;实现从单张或多张图像自动生成3D场景。对于关注3D重建、数字孪生、游戏资产制作或AR/VR内容…

作者头像 李华