递归和递推。
递归和递推是学习算法设计的第一步。
递归算法是把大问题分解成相对较小的问题的过程,而递推就是从小问题逐步推导出大问题的过程;搜索、枚举及优化剪枝。
搜索在所有算法中既是最简单也是最复杂的算法;动态规划(简称DP)。
动态规划的特点是能够把很复杂的问题分解成一个个阶段来处理的递推方法;贪心。
贪心算法是所谓的“只顾眼前利益”的算法;分治、构造等。
分治就是把问题分成若干子问题,然后“分而治之”;构造是指按照一定的规则产生解决问题的方法。
以循环的次数来度量。
算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。
应用于数学和计算机导论。
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率,算法分析的目的在于选择合适算法和改进算法,一个算法的评价主要从时间复杂度和空间复杂度。
一个算法的复杂度是由其输入量决定的,随着输入的增加,不同算法的复杂度增长。
描述算法的方式有多种,常用的有自然语言、结构化流程图、伪代码和PAD图等,其中最普遍的是流程图。
算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。
如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。
不同的算法可能用不同的时间、空间或效率来完成同样的任务。
一个算法的优劣可以用空间复杂度与时间复杂度来衡量。