基于java的数据结构与算法(第一话)
数据结构
官方解释
数据结构的主要任务是通过分析数据对象的结构特征,包括逻辑结构及数据对象之间的关系,然后把逻辑结构表示成计算机课实现的物理结构,从而便于计算机处理。
通俗说法
体现数据元素之间关系组织的集合,作用是组织、存储数据。
算法:
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制
————百度百科
通俗的说:
一定条件(环境变量:软件环境+硬件环境)下——》一些数据(常量)——》一定计算方法——》想要的结果
关键词:最少的时间,最少的内存空间,完成需求
eg 1:
需求:计算1到10000累加
方法1:for循环累加 sum+=1;
方法 2:n=10000, (n/2) *(n+1)
分析:
方法一:循环10000次加法
方法二:一次加法、一次乘法、一次除法
For循环{//输入规模
For循环{//输入规模-----暂时可以看做自变量
N+=1;//核心操作----执行次数也就是(因变量)方程
}
}
方法1:分三块三角形拼接打印
方法2:
两层for循环看做自变量对应x,y轴,核心方程是约束条件,最后执行(只要有方程就能打印出任何二维图案,扩展:微元法、微积分、三维xyz等等)
两种方法优缺点大家自行讨论。
Eg 2:
需求:计算10的阶乘
方法一:
Long result = fun(10);
Public static long fun(long n){
If(n==1){
Return 1;
}
Return n*fun(n-1);
}
方法二:
For循环——》num*= i ;i<=100;
分析:
方法一:10次递归,占用10块栈内存;
方法二:占用1块栈内存;
----------------有问题欢迎一起留言讨论