算法 (一) : 算法简介

算法简介

  • 什么是算法

    ➢一系列的计算步骤,用来将输入数据转化成输出结果

    ●算法的意义

    ➢用于解决特定的问题

    ➢解决同一个问题的不同算法的效率常常相差非常大,这种差距的影响往往比硬件和软件方面的差距还要大

    ●比较常听到的较为简单的算法

    ➢排序算法

    ➢加密算法

    ➢......

 

 

算法的特征

 

  • 有穷性(Finiteness)

    ➢执行有限个步骤之后终止

    ●确切性(Definiteness)

    ➢每一步有确切的定义

    ●输入(Input)

    ➢有0个或N个输入(N >= 1)

    ●输出(Output)

    ➢至少1个输出

可行性(Effectiveness)

➢任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成

如何评判一个算法的优劣?

  • 如果单从效率上进行评估,可能会想到这么一种方案:

    ➢比较不同算法对同一组输入的执行处理时间

    ●上述方案有比较明显的缺点

    ➢执行时间严重依赖硬件以及运行时各种不确定的环境因素

    ➢必须编写相应的测算代码

    ➢测试数据的选择比较难保证公正性

    ●一般从以下维度来评估算法的优劣

    ➢正确性

    ➢可读性

    ➢健壮性(对不合理输入的反应能力和处理能力)

    ➢时间复杂度:估算程序指令的执行次数

    ➢空间复杂度:估算所需占用的存储空间

 

 

大O表示法

算法 (一) : 算法简介

 

常见复杂度

算法 (一) : 算法简介

 

 

常见排序算法的复杂度

 

算法 (一) : 算法简介

 

 

算法的优化方向

  • 用尽量少的内存空间

    ●用尽量少的执行步骤

    ●根据情况,可以

    ➢空间换时间

    ➢时间换空间