参考博客:http://t.csdnimg.cn/lwb1M
1.程序 = 数据结构 + 算法
2.数据结构分为逻辑结构和物理结构。
逻辑结构指数据对象中数据元素之间的相互关系,分为集合结构、线性结构、树形结构、图形结构
物理结构指数据的逻辑结构在计算机中的存储形式,也称为存储结构,分为顺序存储和链式存储
3.算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。简而言之,算法是描述解决问题的方法。
算法的特性:输入,输出,有穷性,确定性和可行性。
输入,是指算法具有零个或多个输入。
输出,是指算法至少有一个或多个输出。
有穷性,是指算法在执行有限的步骤之后,自动结束而不是出现无限循环,并且每一个步骤在有限的时间内完成。
确定性,是指每种情况下所应执行的操作,在算法中都应该有确切的规定。算法执行的每一步骤在一定条件下只有一条执行路径,也就是相同输入只能有一个唯一的输出结果。
可行性,是指算法每一步骤都必须可行,能够通过有限的执行次数完成。
参考博客:https://blog.csdn.net/weixin_45459911/article/details/105436080
好的算法:应该具有正确性,可读性,健壮性,高效率和低存储量的特征
正确性:算法是正确的。
可读性:算法易于让别人读懂。
健壮性:算法在处理各种不同的输入数据时的性能和稳定性。适应输入数据的变化并保持较高的性能。对于非法输入,可以做出判断做出争取的处理,比如打印出:“您的输入非法”等。
高效性:要尽可能的跑的快,占用的空间小。
4.算法时间效率度量
(1)可以忽略加法常数
O(2n + 3) = O(2n)
(2)与最高次项相乘的常数可忽略O(2n^2) = O(n^2)
(3) 最高次项的指数大的,函数随着 n 的增长,结果也会变得增长得更快O(n^3) > O(n^2)
(4)判断一个算法的(时间)效率时,函数中常数和其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数O(2n^2) = O(n^2+3n+1)
O(n^3) > O(n^2)
原文链接:https://blog.csdn.net/liu17234050/article/details/104237990
5.算法的时间复杂度与空间复杂度
衡量一个算法的好坏,就是从时间和空间两个维度来衡量。
算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。即算法中基本操作的执行次数
空间复杂度是对一个算法在运行过程中临时额外占用存储空间大小的量度 。通过计算算法所需的存储空间实现,即运行完一个程序所需内存的大小。
空间复杂度的计算公式记作:S(n)=O(f(n))
其中n为问题的规模,S(n)表示空间复杂度
常用的算法的时间复杂度和空间复杂度
参考链接: