算法就是一种高效解决问题的技巧或者方法

在接下来的学习中,如果你要能看的懂算法,有一些知识点,你需要提前了解到

1、一些代数知识

1>、先来一个小案例,给定函数 f(x) = x * 2 。那么 f(5) 的值是多少呢?如果你的答案是10、那就ok

f(x)中的 x 代表自变量, f 代表因变量
x = 5
那么计算结果:x*2 = 5*2 = 10

2>、对数 算法基础知识_算法,的值是多少呢?如果你知道是 4、那就ok

在数学中,对数是对求幂的逆运算,正如除法是乘法的倒数,反之亦然

如果a的x次方等于N(a>0,且a≠1),那么数x叫做以a为底N的对数(logarithm),记作x=log算法基础知识_算法_02。其中,a叫做对数的底数,N叫做真数

2*2*2*2 = 16

所以计算结果是 4

3>、幂运算:2^3 、2的3次方如果你算出来是 8 、那就ok

同底数幂相乘,底数不变,指数相加。同底数幂相除,底数不变,指数相减。幂的乘方,底数不变,指数相乘

算法基础知识_算法_03

算法基础知识_算法_04

算法基础知识_算法_05

算法基础知识_算法_06

 

4> 、阶乘运算:4! 、4的阶乘运算如果你算出来是 24、那就ok

阶乘是用来解决一些排列与组合问题

例如组合:有四个元素,6 4 2 1,写出这四个数能组成的两位数比如  62 12 42.......

n!=n×(n-1)×(n-2)×(n-3)×...×1

4! = 1*2*3*4 = 24

双阶乘表示方法:
(2n-1)!!
当n=2时,3!!=3×1=3
当n=3时,5!!=5×3×1=15
当n=4时,7!!=7×5×3×1=105

 

2、一些算法的表达方式

1> 如何表达算法的复杂程度?

# 如果我的通讯录里面有100个人,我要找其中一个,我可能需要100次才能命中它
那么此算法的复杂度是:O(100)

# 如果我的通讯录里面有1个人,我要找一个人的话,我需要1次命中它
那么此算法的复杂度是:O(1)

# 如果我的通讯录里面有100个人,我要用二叉树算法找一个人的话,我最多需要7次可以命中它。根据对数运算,2作底数,100作真数,计算出来的结果大约是7
那么此算法的复杂度是:O(7)

 

3、至少熟悉一门编程语言

可以是 c、js、java、php、python  因为用这些语言可以帮你把你的算法进行实现