具有O(1),O(n log n)和O(log n)复杂性的algorithm的例子
O(1),O(n log n)和O(log n)的复杂性,我们每天使用的algorithm是什么?
如果您想要问题中给出的具有时间复杂度的algorithm/语句组的例子,这里是一个小列表 –
  O(1)次 
  1.访问数组索引(int a = ARR [5];) 
  2.在链接列表中插入一个节点 
  3.在堆栈上推送和popup 
  4.从队列中插入和删除 
  5.查找Array中存储的树中父节点或左/右节点的子节点 
  6.跳转到双链表中的下一个/上一个元素 
 你可以find更多的例子 
 准时 
  1.遍历一个数组 
  2.遍历一个链表 
  3.线性search 
  4.删除链接列表中的特定元素(未sorting) 
  5.比较两个string 
  6.检查回文 
  7.计数/桶分类 
 在这里也可以find更多的这样的例子。 
 简而言之,所有需要线性的蛮力algorithm或Noobalgorithm都基于O(n)时间复杂度 
  O(log n)时间 
  1.二进制search 
  2.在二叉search树中查找最大/最小的数字 
  3.基于线性function的某些分治algorithm 
  4.计算斐波纳契数 – 最好的方法 
 这里的基本前提是不使用完整的数据,并在每次迭代中减less问题的大小 
  O(nlogn)时间 
  1.合并sorting 
  2.堆sorting 
  3.快速sorting 
  4.基于优化O(n ^ 2)algorithm的分治algorithm 
 考虑分而治之,引入“log n”的因素。 其中一些algorithm是最优化的,经常使用。 
  O(n ^ 2)时间 
  1.泡沫sorting 
  2.插入sorting 
  3.selectsorting 
 遍历一个简单的二维数组 
 如果它们的O(nlogn)对象存在,这些algorithm应该是效率较低的algorithm。 一般的应用可能是蛮力的。 
我希望这能很好地回答你的问题。 如果用户有更多的例子添加,我会更感到高兴:)
  O(1)一个简单例子可能是return 23;  – 无论input什么,这将返回一个固定的,有限的时间。 
  O(N log N)的典型例子是用一个好的algorithm(例如mergesort)对input数组进行sorting。 
 一个典型的例子,如果O(log N)将在一个sorting后的input数组中查找一个值。 
O(1) – 大多数的烹饪程序是O(1),也就是说,即使有更多的人要烹饪也需要一定的时间(在某种程度上,因为你的锅/饭可能用完了并需要分割烹饪)
O(logn) – 在你的电话簿中find一些东西。 认为二进制search。
O(n) – 读一本书,其中n是页数。 这是阅读一本书的最less时间。
O(nlogn) – 不能立即想到一个可能每天都是nlogn的东西,除非你通过合并或快速sorting来排列卡片!
我可以为您提供一些通用algorithm…
- O(1):访问数组中的元素(即int i = a [9])
- O(n log n):quick或mergesort(平均)
- O(log n):二进制search
这听起来像是家庭作业/面试这样的问题。 如果你正在寻找更具体的东西,那么一般的公众都不知道一个stream行的应用程序的底层实现(当然是开源),这个概念也不适用于“应用程序”
软件应用程序的复杂性不是测量的,也不是用大O表示的。 测量algorithm的复杂性并比较相同域中的algorithm是有用的。 很可能,当我们说O(n)时,我们的意思是它是“O(n) 比较 ”或“O(n)算术运算”。 这意味着,您无法比较任何一对algorithm或应用程序。
O(1):find国际象棋中最好的下一步棋(或者就此而言)。 由于游戏状态的数量是有限的,所以只有O(1):-)
O(1) – 从双向链表中删除一个元素。 例如
 typedef struct _node { struct _node *next; struct _node *prev; int data; } node; void delete(node **head, node *to_delete) { . . . } 
O(n log n)是您能够以多快的速度对任意集进行sorting的上界(假设一个标准的并不是高度并行的计算模型)。
您可以将以下algorithm添加到列表中:
  O(1) – 确定一个数字是偶数还是奇数; 使用HashMap 
  O(logN) – 计算x ^ N, 
  O(N Log N) – 最长的子序列