算法基础

Posted zhangdadayou

tags:

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

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)

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

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

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

常用编程思想与算法

视频二次裁剪时间计算出原片的时间片段算法

视频二次裁剪时间计算出原片的时间片段算法

以下代码片段的算法复杂度

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

片段(Java) | 机试题+算法思路+考点+代码解析 2023