码迷,mamicode.com
首页 > 编程语言 > 详细

算法基础

时间:2019-12-19 23:45:09      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:资源   输出   pytho   NPU   运行时   运行   effective   cti   必须   

1. 什么是算法

  • 算法(Algorithm):一个计算过程,解决问题的方法

    技术图片

  • 一个算法应该具有一下七个重要特称:

    • ①有穷性(Finiteness):算法的有穷性是指算法必须能在执行有限个步骤之后终止;
    • ②确切性(Definiteness):算法的每一步骤必须有确切的定义;
    • ③输入项(Input):一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输 入是指算法本身定出了初始条件;
    • ④输出项(Output):一个算法有一个或多个输出,以反映对输入数据加工后的结果。没 有输出的算法是毫无意义的;
    • ⑤可行性(Effectiveness):算法中执行的任何计算步骤都是可以被分解为基本的可执行 的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性);
    • ⑥高效性(High efficiency):执行速度快,占用资源少;
    • ⑦健壮性(Robustness):对数据响应正确。

    技术图片

2. 算法的好坏评判标准

时间复杂度:T(n)

根据算法写成的程序在执行时 耗费时间的长度。这个长度往往也与输入数据的规 模有关。时间复杂度过高的低效算法可能导致我们 在有生之年都等不到运行结果。

时间复杂度:就是用来评估算法运行时间的一个式子(单位)。一般来说,时间复杂度高的算法比复杂度低的算法慢。

技术图片

print('hello world')
print('hello python')
print('hrllo ssd ')        #O(1)    大O,简而言之可以认为它的含义是“order of”(大约是)。
#
for i in range(n):
    print('hello world')
    for j in range(n):
        print('hello world')   #O(n^2)

for i in range(n):
    for j in range(i):
        print('hrllo owd')   ##O(n^2)
n= 64
while n>1:
    print(n)     #O(log2n)或者O(logn)
    n = n//2

while的分析思路:

? 假如n = 64的时候会输出:如下图

? 技术图片

这时候可以发现规律:

技术图片

  • 常见的事件复杂度:

    O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

空间复杂度:S(n)

根据算法写成的程序在执行时 占用存储单元的长度。这个长度往往与输入数据的 规模有关。空间复杂度过高的算法可能导致使用的 内存超限,造成程序非正常中断。

空间复杂度:用来评估算法内存占用大小的一个式子

算法基础

标签:资源   输出   pytho   NPU   运行时   运行   effective   cti   必须   

原文地址:https://www.cnblogs.com/zhangdadayou/p/12070532.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!