数据结构中的大O表示法2024 年 8 月 28 日 | 3 分钟阅读 渐进分析是研究算法性能随输入规模变化而变化情况的方法。我们使用大O表示法来将运行时间的增长渐进地限制在某个常数因子的上下范围内。执行一个算法所需的时间、存储空间和其他资源量决定了它的效率。渐进表示法用于确定效率。对于不同类型的输入,一个算法的性能可能会有所不同。随着输入规模的增大,性能也会发生波动。 当输入趋向于某个特定值或极限值时,渐进表示法用于表示一个算法执行所需的时间。例如,当输入数组已经排序时,该方法所花费的时间是线性的,这是最好的情况。 然而,当输入数组是逆序时,该方法需要最长的时间(二次方级)来对项目进行排序,这是最坏的情况。当输入数组既未排序也非逆序时,它需要平均时间。渐进表示法用于表示这些时长。 大O表示法根据函数的增长率对函数进行分类:具有相同增长率的几个函数可以用相同的大O表示法来表示。使用符号O是因为函数的增长率也被称为函数的阶。一个函数的大O表示法描述通常只提供了该函数增长率的一个上界。 拥有一种渐进表示法会很方便,它的意思是“运行时间的增长最多是这么多,但它也可能增长得更慢。”我们正是为此类场合使用“大O”表示法。 大O表示法的优点
示例现在让我们更深入地看一些大O表示法的例子 O(1) 这个函数相对于其输入以 O(1) 的时间(或“常数时间”)运行。输入数组可以是 1 个项目或 1,000 个项目,但这个函数仍然只需要一步。 O(n) 这个函数以 O(n) 的时间(或“线性时间”)运行,其中 n 是数组中的项目数。如果数组有 10 个项目,我们必须打印 10 次。如果它有 1000 个项目,我们必须打印 1000 次。 O(n^2) 这里我们嵌套了两个循环。如果我们的数组有 n 个项目,外层循环运行 n 次,内层循环在外层循环的每次迭代中都运行 n 次,总共打印 n^2 次。如果数组有 10 个项目,我们必须打印 100 次。如果它有 1000 个项目,我们必须打印 1000000 次。因此,这个函数以 O(n^2) 的时间(或“二次方时间”)运行。 O(2^n) O(2^n) 函数的一个例子是斐波那契数的递归计算。O(2^n) 表示一个算法,其增长速度随着输入数据集的每次增加而加倍。O(2^n) 函数的增长曲线是指数级的——开始时非常平缓,然后急剧上升。 因此,在本文中,我们理解了数据结构中的大O表示法是什么,以及我们如何在日常实践中使用它来理解我们日常交付成果的时间复杂度。 下一主题数据结构中的二叉树遍历 |
简介 数组是计算机编程中的基本数据结构,用于存储相同数据类型的元素。数组需要频繁操作,例如重新排列其组件。例如,可以通过一次循环旋转数组。数组中的每个元素...
阅读 4 分钟
什么是回文?如果一个字符串从后向前和从前向后阅读时相同,则该字符串称为回文串。回文串的反转与原字符串相同。例如:“abcddbca”、“abcdbca”是回文串的例子。问题陈述:这里,...
7 分钟阅读
1962 年,GM Adelson-Velsky 和 EM Landis 创建了 AVL 树。为了纪念创建者,该树被称为 AVL。AVL 树的定义是高度平衡的二叉搜索树,其中每个节点都有一个平衡因子,该平衡因子由...
14 分钟阅读
在计算机科学领域,排序是一个过程,因为它涉及到将数据按顺序排列,以提高处理和分析的效率。然而,当处理超出标准数据类型限制的数字时,排序就会变得非常具有挑战性。这些超大数字,...
7 分钟阅读
在理解结构化数据和非结构化数据之前,让我们先了解一下数据。数据可以定义为信息以非常经济的形式进行转换,以便进行翻译或处理。数据,包括视频、图像、声音和文本,都表示为二进制值...
阅读 3 分钟
问题陈述给定一个 0 索引的整数数组 nums 和一个整数 k。我们最多可以对数组执行 k 次以下操作:选择数组中的任何索引 i 并将 nums[i] 增加或减少 1。最终数组的分数是频率...
阅读 10 分钟
中位数理解概述:当值按升序或降序排列时,数据集的中位数是将较高一半与较低一半分开的值。它不受极端值影响的事实意味着它提供了更平衡的...
5 分钟阅读
问题陈述:您有一个由英文字母组成的字符串 s。您的任务是查找并返回同时出现在字符串中的小写和大写形式的英文字母。如果没有这样的字母,则返回一个空字符串。Java 实现……
阅读 4 分钟
在本文中,我们将探讨实现这种视觉表示的各种策略,并检查它们的应用程序和重要性。二叉树是计算机科学中用于各种目的的基本数据结构,包括数据库索引、文件系统组织和排序算法。虽然在概念上了解二叉树……
阅读 4 分钟
在本文中,我们将讨论数据结构中的后序遍历。堆栈、数组、队列等线性数据结构只有一种遍历数据的方式。但在树等分层数据结构中,有多种遍历数据的方式。因此,...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India