算法概述
1.1算法的定义
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
1.2算法的 5个基本特征
1.输入:一个算法必须有零个或以上输入量。
2.输出:一个算法应有一个或以上输出量,输出量是算法计算的结果。
3.明确性:算法的描述必须无歧义,以保证算法的实际执行结果是精确地符合要求或期望,通常要求实际运行结果是确定的。
4.有限性:依据图灵的定义,一个算法是能够被任何图灵完备系统模拟的一串运算,而图灵机器只有有限个状态、有限个输入符号和有限 个转移函数(指令)。而一些定义更规定算法必须在有限个步骤内完成任务。
5.有效性:又称可行性。能够实现,算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现
1.3算法的描述方法
自然语言
流程图
程序设计语言
伪代码等等
1.4算法的评定
时间复杂度
算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。
T(n)=Ο(f(n))因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。
空间复杂度
算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。
正确性
算法的正确性是评价一个算法优劣的最重要的标准。
可读性
算法的可读性是指一个算法可供人们阅读的容易程度。 [1]
健壮性
健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性。
1.5算法的重要性
算法是计算机科学领域最重要的基石之一,计算机领域重要的便是那些算法和理论。在现实生活中,招聘时,绝大多数公司都会有与算法和数据结构有关的题目,在工作中,算法和架构是核心。算法是计算机发展的基础,算法不仅仅局限在计算机领域,在其它领域也发挥着重要的作用。
1.6经典算法
穷举搜索算法:floyed算法
迭代算法:数学函数的迭代求解
递推算法:斐波那契数列
递归算法:汉诺塔
分治算法:快速排序,折半查找等
贪心算法:最小代价生成树
支限界算法:以广度优先搜索为基础,定义剪枝策略