算法 (一) : 算法简介
算法简介
-
什么是算法
➢一系列的计算步骤,用来将输入数据转化成输出结果
➢
●算法的意义
➢用于解决特定的问题
➢解决同一个问题的不同算法的效率常常相差非常大,这种差距的影响往往比硬件和软件方面的差距还要大
➢
●比较常听到的较为简单的算法
➢排序算法
➢加密算法
➢......
算法的特征
-
有穷性(Finiteness)
➢执行有限个步骤之后终止
●
●确切性(Definiteness)
➢每一步有确切的定义
●
●输入(Input)
➢有0个或N个输入(N >= 1)
➢
●输出(Output)
➢至少1个输出
可行性(Effectiveness)
➢任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成
如何评判一个算法的优劣?
-
如果单从效率上进行评估,可能会想到这么一种方案:
➢比较不同算法对同一组输入的执行处理时间
●上述方案有比较明显的缺点
➢执行时间严重依赖硬件以及运行时各种不确定的环境因素
➢必须编写相应的测算代码
➢测试数据的选择比较难保证公正性
➢
●一般从以下维度来评估算法的优劣
➢正确性
➢可读性
➢健壮性(对不合理输入的反应能力和处理能力)
➢时间复杂度:估算程序指令的执行次数
➢空间复杂度:估算所需占用的存储空间
大O表示法
常见复杂度
常见排序算法的复杂度
算法的优化方向
-
用尽量少的内存空间
●用尽量少的执行步骤
●根据情况,可以
➢空间换时间
➢时间换空间