搜索
首页后端开发Python教程使用Python可视化O(n)。

介绍

在计算机科学和编程领域中,了解算法的效率是至关重要的,因为它有助于创建既优化又快速执行的软件。时间复杂度在这个背景下是一个重要的概念,因为它衡量了算法的运行时间随着输入规模增长的变化情况。常用的时间复杂度类O(n)表示输入规模和执行时间之间的线性关系。

定义

计算机科学中的算法复杂性是根据算法的输入大小评估所需的资源,如时间和空间利用率。更进一步地说,它支持我们理解算法在考虑其输入大小时执行的速度。用于描述算法复杂性的主要符号是大O符号(O(n))。

语法

for i in range(n):
   # do something

一个`for`循环,根据从0到`n-1`的范围运行特定的一组指令,并在每次迭代中执行一个操作或一组操作。其中'n'表示迭代次数。

在O(n)时间复杂度下,随着输入规模'n'的增加,执行时间成比例增长。随着'n'的增加,循环的迭代次数和完成循环所需的时间将成比例增加。线性时间复杂度表现出输入规模和执行时间之间的直接比例关系。

可以在循环中执行任何任务或任务序列,而不考虑输入大小'n'。这里需要注意的主要方面是循环执行'n'次迭代,导致线性时间复杂度。

算法

  • 步骤1:将一个变量sum初始化为0

  • 步骤2:遍历提供的列表中的每个元素

  • 步骤3:将该元素合并到当前的总和值中。

  • 第四步:循环结束后应返回总和。

  • 步骤 5:结束

方法

  • 方法1:绘制时间与输入大小的关系

  • 方法二:绘制操作与输入规模之间的关系

方法1:绘制时间与输入大小的关系图

Example

import time
import matplotlib.pyplot as plt

def algo_time(n):
    sum = 0
    for i in range(n):
        sum += i
    return sum

input_sizes = []
execution_times = []

for i in range(1000, 11000, 1000):
    start_time = time.time()
    algo_time(i)
    end_time = time.time()
    input_sizes.append(i)
    execution_times.append(end_time - start_time)

plt.plot(input_sizes, execution_times)
plt.xlabel('Input Size')
plt.ylabel('Execution Time (s)')
plt.show()

输出

使用Python可视化O(n)。

这段代码是用来测量`algo_time()`算法在不同输入大小下的运行时间。我们将把希望测试的输入大小以及它们相应的执行时间存储在这些列表中。

使用'for'循环来迭代一系列的输入大小。在这种情况下,循环将从1000运行到接近11000之前,每次增加1000。进一步说明,我们计划通过改变从1000到10000的'n'值来评估算法,增量为1000。

在循环内部,我们针对每个输入大小测量`algo_time()`函数的执行时间。为了开始跟踪时间,我们在调用函数之前使用`time.time()`,并在函数完成运行后立即停止。然后,我们将持续时间存储在名为'execution_time'的变量中。

我们将每个给定输入大小的输入值('n')及其相应的执行时间添加到它们各自的列表('input_sizes'和'execution_times')中。

循环完成后,我们拥有生成绘图所需的数据。'plt.plot(input_sizes, execution_times)' 使用我们收集到的数据生成一个基本的折线图。x轴显示的是代表不同输入大小的 'input_sizes' 值。

'plt.xlabel()'和'plt.ylabel()'最后用于分别标记坐标轴的含义,而调用'plt.show()'函数使我们能够呈现图形。

通过运行这段代码,我们可以通过绘制图表来可视化执行时间随着输入大小('n')的增加而增加。假设算法的时间复杂度为O(n),我们可以近似认为当绘制图表时,输入大小和执行时间之间存在几乎直线的相关性。

方法二:绘制操作与输入大小的关系

Example

import matplotlib.pyplot as plt

def algo_ops(n):
    ops = 0
    sum = 0
    for i in range(n):
        sum += i
        ops += 1
    ops += 1  # for the return statement
    return ops

input_sizes = []
operations = []

for i in range(1000, 11000, 1000):
    input_sizes.append(i)
    operations.append(algo_ops(i))

plt.plot(input_sizes, operations)
plt.xlabel

plt.xlabel('Input Size')
plt.ylabel('Number of Operations')
plt.show()

输出

使用Python可视化O(n)。

这段代码旨在分析`algo_ops()`算法在不同输入大小下执行的操作次数。通过利用`algo_ops()`函数,可以计算从零到给定输入参数'n'范围内所有数值的求和结果,并同时跟踪和记录每次计算过程中执行的每个操作。

我们首先导入'matplotlib.pyplot'模块,该模块允许我们创建诸如图形之类的可视化。

接下来,我们定义 algo_ops() 函数,该函数接受一个输入数字 'n'。在函数内部,我们初始化两个变量:'ops' 用于计算操作次数,'sum' 用于存储数字的累积和。

这些数组将存储我们希望检查的维度及其相应的执行持续时间。

我们利用迭代循环的一种方式是在多个输入尺度内进行循环。在这种情况下,循环执行范围从1000到10000(除了11000)。这意味着我们将评估变量'n'在1000到10000之间以100为增量的技术。

在循环中,我们计算所有输入大小的`algo_time()`过程的性能。我们在调用该过程之前使用`time.time()`开始一个秒表,并在子程序执行结束后直接结束它。接下来,我们将时间间隔保存在一个名为'execution_period'的变量中。

对于每个输入的大小,我们将输入的值('n')包含在名为'input_sizes'的列表中。此外,我们还将相应的处理时间附加在'execution_times'集合中。

循环完成后,我们已经累积了制作图表所需的基本数据。语句 'plt.plot(input_sizes, execution_times)' 使用收集到的数据创建了一个基本的折线图。'input_sizes' 的值显示在 x 方向轴上,表示不同的输入大小。'execution_times' 的值显示在垂直轴上,表示执行 `algo_time()` 函数所需的时间,其输入大小各不相同。

最后,我们通过 'plt.xlabel()' 和 'plt.ylabel()' 来标记坐标系,以展示每个轴的含义。接下来,执行 'plt.show()' 函数来呈现图形。

一旦我们执行程序,图表将向我们展示当输入的规模('n')增长时,处理时间如何上升。

结论

总之,掌握使用Matplotlib在Python中的时间复杂度和可视化是任何寻求创建高效和优化软件解决方案的程序员的宝贵技能。了解算法在不同输入规模下的行为,使我们能够解决复杂问题并构建健壮的应用程序,以及及时高效地提供结果。

以上是使用Python可视化O(n)。的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:tutorialspoint。如有侵权,请联系admin@php.cn删除
如何解决Linux终端中查看Python版本时遇到的权限问题?如何解决Linux终端中查看Python版本时遇到的权限问题?Apr 01, 2025 pm 05:09 PM

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

我如何使用美丽的汤来解析HTML?我如何使用美丽的汤来解析HTML?Mar 10, 2025 pm 06:54 PM

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

如何使用TensorFlow或Pytorch进行深度学习?如何使用TensorFlow或Pytorch进行深度学习?Mar 10, 2025 pm 06:52 PM

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

在Python中如何高效地将一个DataFrame的整列复制到另一个结构不同的DataFrame中?在Python中如何高效地将一个DataFrame的整列复制到另一个结构不同的DataFrame中?Apr 01, 2025 pm 11:15 PM

在使用Python的pandas库时,如何在两个结构不同的DataFrame之间进行整列复制是一个常见的问题。假设我们有两个Dat...

如何使用Python创建命令行接口(CLI)?如何使用Python创建命令行接口(CLI)?Mar 10, 2025 pm 06:48 PM

本文指导Python开发人员构建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等库详细介绍,强调输入/输出处理,并促进用户友好的设计模式,以提高CLI可用性。

哪些流行的Python库及其用途?哪些流行的Python库及其用途?Mar 21, 2025 pm 06:46 PM

本文讨论了诸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和请求等流行的Python库,并详细介绍了它们在科学计算,数据分析,可视化,机器学习,网络开发和H中的用途

解释Python中虚拟环境的目的。解释Python中虚拟环境的目的。Mar 19, 2025 pm 02:27 PM

文章讨论了虚拟环境在Python中的作用,重点是管理项目依赖性并避免冲突。它详细介绍了他们在改善项目管理和减少依赖问题方面的创建,激活和利益。

什么是正则表达式?什么是正则表达式?Mar 20, 2025 pm 06:25 PM

正则表达式是在编程中进行模式匹配和文本操作的强大工具,从而提高了各种应用程序的文本处理效率。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版