复杂度为 O(1)、O(n log n) 和 O(log n) 的算法示例

2023-11-30

我们日常使用的复杂度为 O(1)、O(n log n) 和 O(log n) 的算法有哪些?


如果您想要问题中给出的具有时间复杂度的算法/语句组的示例,这里有一个小列表 -

O(1) time

  • 访问数组索引 (int a = ARR[5];)
  • 在链表中插入节点
  • 堆栈上的压入和弹出
  • 插入队列和从队列中删除
  • 找出存储在数组中的树中节点的父节点或左/右子节点
  • 跳转到双向链表中的下一个/上一个元素

O(n) time

简而言之,所有暴力算法或需要线性的 Noob 算法都基于 O(n) 时间复杂度

  • 遍历数组
  • 遍历链表
  • 线性搜索
  • 删除链表中的特定元素(未排序)
  • 比较两个字符串
  • 检查回文
  • 计数/桶排序 在这里你还可以找到一百万个这样的例子......

O(log n) time

  • 二分查找
  • 在二叉搜索树中查找最大/最小数
  • 某些基于线性函数的分而治之算法
  • 计算斐波那契数 - 最佳方法 这里的基本前提是不使用完整的数据,并通过每次迭代减少问题的规模

O(n log n) time

考虑到分而治之,引入了“log n”因子。其中一些算法是最优化的并且经常使用。

  • 归并排序
  • 堆排序
  • 快速排序
  • 某些基于优化 O(n^2) 算法的分治算法

O(n^2) time

如果存在 O(nlogn) 对应算法,这些算法应该是效率较低的算法。这里一般的应用可能就是Brute Force。

  • 冒泡排序
  • 插入排序
  • 选择排序
  • 遍历一个简单的二维数组

O(n!) time

  • 通过暴力搜索解决旅行商问题
  • 生成部分有序集的所有无限制排列;
  • 用拉普拉斯展开式求行列式
  • 枚举集合的所有分区
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

复杂度为 O(1)、O(n log n) 和 O(log n) 的算法示例 的相关文章

  • 素数生成器算法

    我一直在尝试解决素数生成算法的SPOJ问题 这是问题 彼得想为他的密码系统生成一些素数 帮助 他 你的任务是生成两个给定之间的所有素数 数字 Input 输入以单行中测试用例的数量 t 开始 t Output 对于每个测试用例 打印所有素数
  • 从原点开始在离散 2D 网格上迭代向外螺旋的算法

    例如 这是预期螺旋的形状 以及迭代的每个步骤 y 16 15 14 13 12 17 4 3 2 11 18 5 0 1 10 x 19 6 7 8 9 20 21 22 23 24 其中线条是 x 轴和 y 轴 以下是算法每次迭代 返回
  • 检查有效的 IMEI

    有人知道如何检查有效的 IMEI 吗 我找到了一个可以检查此页面的功能 http www dotnetfunda com articles article597 imeivalidator in vbnet aspx http www do
  • Python 旅行商贪婪算法 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 因此 我为旅行推销员问题创建了一种排序 并按 x 坐标和 y 坐标进行排序 我正在尝试实施贪婪搜索 但无法做到 此外 每
  • 这个函数(for循环)空间复杂度是O(1)还是O(n)?

    public void check 10 for string i list Integer a hashtable get i if a gt 10 hashtable remove i 这是 O 1 还是 O n 我猜测 O n 但不是
  • 在树结构的 Big-O 表示法中:为什么有些来源引用 O(logN),有些来源引用 O(h)?

    在研究遍历二叉搜索树的任何算法的复杂性时 我看到两种不同的方式来表达同一件事 版本 1 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O h 版本 2 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O logN
  • 优化计算中使用的 # 个线程的算法

    我正在执行一个操作 我们将其称为CalculateSomeData CalculateSomeData 在连续的 代 中运行 编号为 1 x 整个运行中的代数由CalculateSomeData 的输入参数固定 并且是先验已知的 完成一次生
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 删除近排序数组中未排序/离群元素

    给定一个像这样的数组 15 14 12 3 10 4 2 1 我如何确定哪些元素乱序并删除它们 在本例中为数字 3 我不想对列表进行排序 而是检测异常值并将其删除 另一个例子 13 12 4 9 8 6 7 3 2 我希望能够删除 4 和
  • 连接红黑树

    OCaml 标准库有一个很棒的Set使用非常有效的分而治之算法来计算的实现union两套 我相信它会从一组中获取整个子树 而不仅仅是单个元素 并将它们插入到另一组中 并在必要时重新平衡 我想知道这是否需要 OCaml 使用的 AVL 树中保
  • 表达式的大 O 表示法

    如果我有一个需要 4n 2 7n 步才能完成的算法 它的 O 是多少 O 4n 2 O n 2 我知道 7n 被截断 但我不知道是否应该保留 n 2 系数 Thanks 您应该删除任何系数 因为问题实际上是在 按顺序 询问 它试图将其描述为
  • Java 中查看 ArrayList 是否包含对象的最有效方法

    我有一个 Java 对象的 ArrayList 这些对象有四个字段 我用其中两个字段来将对象视为与另一个对象相等 我正在寻找最有效的方法 给定这两个字段 以查看数组是否包含该对象 问题在于这些类是基于 XSD 对象生成的 因此我无法修改类本
  • 用于在链表中查找结点的生产代码

    我在一次采访中被问到这个问题 我被要求编写代码 用于在 O 1 空间和线性时间的生产环境中在链表 其形式为 Y 形式 双臂不一定相等 中查找结点 我想出了这个解决方案 我以前在某处见过 1 Measure lengths of both l
  • 在 Python 中从 Excel 复制 YEARFRAC() 函数

    因此 我使用 python 来自动执行一些必须在 Excel 中执行的重复任务 我需要做的计算之一需要使用yearfrac 这在Python中被复制了吗 I found this https lists oasis open org arc
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • while循环的时间复杂度是多少?

    我正在尝试找出 while 循环的时间复杂度 但我不知道从哪里开始 我了解如何找到 for 循环的复杂性类别 但是当涉及到 while 循环时 我完全迷失了 关于从哪里开始有什么建议 提示吗 这是一个问题的示例 x 0 A n some a
  • 高度并行化的Levenshtein距离算法

    实际上 我必须实现一个字符串比较 最后得到匹配百分比 不仅仅是布尔结果匹配 不匹配 为此 我找到了 Levenstein 距离算法 但现在的问题是性能 例如 我有 1k 个字符串需要相互比较 现在大约需要 10 分钟 对于每个算法 我已经并
  • 使用递归返回嵌套列表中第二小的数字

    我必须归还第二小的使用递归的 python 列表中的数字 以及no loops 我所做的是创建一个辅助函数 它返回列表中 最小 第二小的 值的元组 然后我只取tuple 1 in my second smallest func def s
  • pandas DataFrame.join 的运行时间是多少(大“O”顺序)?

    这个问题更具概念性 理论性 与非常大的数据集的运行时间有关 所以我很抱歉没有一个最小的例子来展示 我有一堆来自两个不同传感器的数据帧 我需要最终将它们连接成两个very来自两个不同传感器的大数据帧 df snsr1 and df snsr2
  • 确定一组日期的事件重复模式

    我正在寻找一种模式 算法或库 它将采用一组日期并在退出时返回重复的描述 即集合 11 01 2010 11 08 2010 11 15 2010 11 22 2010 11 29 2010 会产生类似 十一月的每个星期一 的结果 有没有人以

随机推荐