python算法之基础
图解算法使用Python
前言
计算思维分为四部分:分解、模式识别、模式概括与抽象以及算法。
提示:以下是本篇文章正文内容,下面案例可供参考
一、计算机绘图指令实践
指令 | 说明 |
---|---|
BT | 画大三角形 |
ST | 画小三角形 |
BC | 画出大圆形 |
SC | 画出小圆形 |
BR | 画大矩形 |
SR | 画小矩形 |
Repeat(a1 a2 a3 …)b | 重复括号内所有指令b次,例如Repeat(SC)2表示连续画出两个小圆形 |
二、最大公约数
1.描述
使用辗转相除法算法来求取两个整数的最大公约数。
代码如下(示例):
Num_1=int(input('请输入第一个整数:'))
Num_2=int(input('请输入第一个整数:'))
if Num_1 < Num_2:
temp_num = Num_1
Num_1=Num_2
Num_2=temp_num
while Num_2 != 0:
temp_num=Num_1 % Num_2
Num_1=Num_2
Num_2=temp_num
print('最大公约数(g.c.d):',Num_1)
2.算法条件
在计算机中,算法是不可或缺的一环。在认识了算法的定义之后,我们再来看看算法必须符合的5个条件。
算法特性 | 内容说明 |
---|---|
输入(Input) | 0个或者多个输入数据,这些输入必须有清楚的描述和定义 |
输出(Output) | 至少会有一个输出结果,不能没有输出结果 |
明确性(Definiteness) | 每一条指令或者每一个步骤必须是简洁明确的 |
有限性(Finiteness) | 再有限步骤后一定会结束,不会产生无限不循环 |
有效性(Effectiveness) | 步骤清楚且可行,只要时间允许,用户就可以用纸笔计算而求出答案 |
三、伪语言(Pseudo-Language)
算法可以用可读性高的高级语言或者伪语言来描述或者表达,以下算法是python语言描述,用于计算传入的两个数x,y,求取x的y次方。
代码如下(示例):
def pow(x,y):
p=1
for i in range(1,y+1):
p *= x
return p
print(pow(4,3))
伪语言是一种非常接近高级程序设计语言但不能直接放在计算机中执行的语言,一般需要一种特殊的预处理器(preprocessor)或者人工编写转换成真正的计算机语言。经常使用的伪语言有SPARKS、PASCAL-LINK等。
四、时间复杂度
评估一个算法的好坏,可以利用算法执行步骤的计数来作为衡量运行时间的标准。
时间复杂度:
在一个完全理想状态下的计算机中,使用t(n)表示程序执行所需要花费的时间,其n表示输入数据量。程序的最坏运行时间或者最大运行时间是时间复杂度的衡量标准。
Big-Oh | 说明 |
---|---|
o ( 1 ) o(1) o(1) | 常数时间表示算法的运行时间是一个常数倍 |
o ( n ) o(n) o(n) | 线性时间表示执行时间会随数据集合的大小而线性增加 |
o ( l o g 2 n ) o(log_2n) o(log2n) | 次线性时间表示成长速度比线性时间慢,比常数时间快 |
o ( n 2 ) o(n^2) o(n2) | 平方时间表示算法的运行时间会呈现二次方增长 |
o ( n 3 ) o(n^3) o(n3) | 立方时间表示算法的运行时间会呈现三次方增长 |
o ( 2 n ) o(2^n) o(2n) | 指数时间表示算法的运行时间会呈现2的n次方增长,解决NonpolynomialProblem问题算法的时间复杂度为 o ( 2 n ) o(2^n) o(2n) |
o ( n l o g 2 n ) o(nlog_2n) o(nlog2n) | 线性乘对数时间,介于线性和二次方增长的中间模式。 |
总结
对算法特征以及时间复杂度进行简单介绍。