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