算法 准备

Posted yu-liang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法 准备相关的知识,希望对你有一定的参考价值。

一.算法

1.算法:算法面向一个问题,体现解决问题的流程,问题定义输入和输出的关系,

2.特点:有穷性、确定性、能行性、输入、输出

 

二.算法设计和分析

1.算法一般用伪代码描述,重点体现流程

2.算法的运行时间:

(1)考虑输入的情况,相同规模不同的输入可能导致算法的运行时间不同,比如顺序和逆序的排序

(2)考虑输入的规模,一般来说,输入规模越大,算法运行时间越长,比如排序6个元素和6万个元素

(3)考虑到算法运行时间的上界,一般来说,对别人说某个算法的运行时间,只会给出最多运行多少时间,不会给出最少运行时间,因为算法注重的是效率

(4)考虑到算法在不同机器上的运行速度不同,一般假设算法在相同机器上的运行,也就是不考虑机器对算法的影响,也被称为相对运行速度

3.分析算法:一般考虑规模为n的算法的最坏运行时间的相对运行时间

(1)算法的最坏运行时间(通常考虑):最长运行时间,也就是任何输入的运行时间的一个上界

(2)算法的平均运行时间(偶尔考虑):所有可能输入的加权平均期望时间,必须先知道输入的统计分布

(3)算法的最好运行时间(一般不考虑):是虚假的,具有欺骗性的数据,因为不会每次都能达到最好的输入,

4.分析算法的一般方法是渐近分析:(1)忽略低阶项和常系数(2)对于输入规模n的算法只考虑算法的运行时间的增长率或增长量级

 

三.渐近分析

1.典型的增长阶:

技术分享图片

2.增长的记号:

技术分享图片

 

3.

技术分享图片=(渐近紧界)

技术分享图片

技术分享图片,f(n)等于theta(g(n))(f(n)属于theta(g(n))函数集的集合)

技术分享图片

 例:θ(n2)<θ(n3)表示当n>某个n0时,前者的性能好于后者

 

4.

技术分享图片<=(最坏运行时间)(渐近上界)

技术分享图片

例1:2n2=O(n3)等价于2n2属于O(n3)的集合

例2:f(n)=n3+O(n2)表示存在h(n)属于O(n2),使得f(n)=n3+h(n)

例3:n2+O(n)=O(n2)表示对于任意f(n)属于O(n),存在h(n)属于O(n2),使得n2+f(n)=h(n)

 

5. 

技术分享图片>=(渐近下界)

技术分享图片

 

6.< 和 >

技术分享图片

技术分享图片

 


以上是关于算法 准备的主要内容,如果未能解决你的问题,请参考以下文章

算法面试准备

应对笔试手写代码,如何准备深度优先算法 & 广度优先算法?

应对笔试手写代码,如何准备深度优先算法 & 广度优先算法?

算法准备-分治算法解决众数求解问题

校招准备系列:每天一道算法题

准备了2个月,终于拿到了推荐算法岗的offer