Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >O(n log ) vs O(n+m) -哪个更好?

O(n log ) vs O(n+m) -哪个更好?
EN

Stack Overflow用户
提问于 2016-05-24 08:18:12
回答 3查看 10.6K关注 0票数 9

嗨,这段时间的复杂性更好。

O(n log m)O(n + m)

通过对这两种算法的分析,哪一种算法更适合大规模使用?

如果n和m是指数大的,它就会变成

O(2e)O(e*(something linear to e))

示例问题:两个数组中的公共元素:

1) 2指针法

2)使用二进制搜索

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-24 10:51:13

我认为您要问的是如何最好地找到两个排序数组中的公共元素。您可以选择两种算法:

  1. “双指针”方法,即O(m + n)。
  2. 使用二进制搜索来确定数组N中的项是否在数组M中,这是O(n日志m)。

如果阵列大小相近,那么第一个严格线性的算法更好。

如果其中一个数组比另一个数组大得多,那么您可能需要考虑二进制搜索方法。您需要在较大的数组中搜索较小数组中的项。例如,如果有数组M和N,其中M有1,000,000项,N有100项,则可以选择:

  • 查找N中的M(即对100数组进行1,000,000次搜索)
  • 查找M中的N(即对1,000,000数组进行100次搜索)

如果在N中查找M,则复杂度为O(m )。这里,m=1000000log(n)=7 (大约)

如果在M中查找N,则复杂度为O(n log )。n=100log(m)=20 (约)

在这种情况下你想做的事情很明显。

在实际应用中,使用O(m+n)还是O(n log )(其中n小于m)算法之间的界限只能通过经验来确定。这不仅仅是一个计算(m + n) < (n log m)的问题,因为二进制搜索涉及一些开销,而双指针方法并不是这样,即使(m + n)是双(n log m)还是三(n log m),也很可能会更快。

票数 18
EN

Stack Overflow用户

发布于 2016-05-24 09:08:55

这两种情况都没有明显的改善,因为这取决于nm的相对值。

如果假设它们是相等的,那么就有O(n log n)O(n),所以第二个(O(n + m))更快。另一方面,如果n实际上是常数,而m增长很快,那么您将看到O(log m)O(m),所以第一个更好。

基本上,对于大型m来说,第一种更好,对于它们都很大的情况,第二种更好。(如果n控制方程,那么它们都是线性的。)

票数 12
EN

Stack Overflow用户

发布于 2020-01-19 11:23:57

总之,它是m+n与( mlogn或nlogm之一)的值,这取决于您所选择的两个数组的长度。虽然大O复杂度分析没有考虑对数的“基数”,但对于这样的问题,在这些问题中,数值决定了更好的复杂性,但需要注意的一点是,对数的基数是"2“,而不是"10”,用具体的例子来计算所观察的元素数或所做的比较的数量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37418916

复制
相关文章
think-cell chart系列7——堆积面积图
今天跟大家分享的是think-cell chart系列的第7篇——堆积面积图。 堆积面积图是很常用的反应数据变动趋势和内部结构的图表类型,在excel中制作也很简单。 那么在think-cell c
数据小磨坊
2018/04/10
2.2K0
think-cell chart系列7——堆积面积图
雷达图面积计算
雷达图表,也被称为蜘蛛图(玫瑰图),在数据的可视化时候,经常被用到,可以提示一个系统不同维度的得分情况,以判断该系统的完整性。(譬如个人在下面10个维度的得分,可以知道数学、英语、生物、音乐及运动等部分还需加强)
Jamesjin63
2022/11/03
1.5K0
雷达图面积计算
用python计算圆的面积
算法与编程之美
2023/10/09
2460
用python计算圆的面积
用python计算圆面积
print(‘圆的面积为:{,2f}’.format(3.14*int(r)**2))
算法与编程之美
2023/10/25
2340
用python计算圆面积
think-cell chart系列8——百分比堆积面积图
今天跟大家分享的是think-cell chart系列的第8篇——堆积面积图。 实在是没有找到合适的案例图,所以今天就一步一步自己做案例了。 作图表先要有数据,数据比较好准备,重要的是知道在thin
数据小磨坊
2018/04/10
1.9K0
think-cell chart系列8——百分比堆积面积图
GIS教程—坝区面积计算
在输入要素类时,选择下拉三角选择要素,等高点和等高线的高度字段均要选择BSGC,并得出结果
陈南GISer
2021/08/19
6740
GIS教程—坝区面积计算
Python项目:面积计算器
这个就不多说了,开箱即用。没有函数。 print("欢迎使用面积计算器!") print("(1)正方形 (2)长方形 (3)三角形 (4)平行四边形 (5)梯形") lx = input("请输入类型:") # 正方形 if lx == "1": print("正方形面积:边长*边长") bc = input("请输入边长:") bc = float(bc) mj = bc * bc print("面积:", mj) # 长方形 if lx == "2":
嘉嘉123
2022/12/14
1.1K0
Python项目:面积计算器
python计算多边形面积
本文提供一个简单的方法计算多边形面积,参考维基百科 实现代码: def polygon_area(polygon): """ compute polygon area polygon: list with shape [n, 2], n is the number of polygon points """ area = 0 q = polygon[-1] for p in polygon: area += p[0] * q[1]
DoubleV
2021/12/06
1.6K0
python计算多边形面积
圆柱表面积公式计算器_根据体重体表面积计算公式
多面体的体积和表面积:有立方体计算公式、长方体∧棱柱∨计算公式、三棱柱计算公式、棱锥计算公式、棱台计算公式、圆柱和空心圆柱∧管∨计算公式、斜线直圆柱计算公式、直圆锥计算公式、圆台计算公式、球计算公式、球扇形∧球楔∨计算公式、球缺计算公式、圆环体∧胎∨计算公式、球带体计算公式、桶形计算公式、椭球体计算公式、交叉圆柱体计算公式、梯形体计算公式等。
全栈程序员站长
2022/09/29
1.2K0
算法模板——计算几何1(图形面积)
实现功能——输入N个点,求出按此顺序围成的图形的面积 原理:其实就是个向量的叉积运算(详见UASCO-nocow:计算几何),注意二维的叉积是个很逗的东西,叉积这玩意本身就来自于三维向量 (HansBug:临睡觉了,水一发呵呵哒,额。。。phile犇不在好寂寞TT) 1 var 2 i,j,k,l,m,n:longint; 3 a:array[0..100000,1..2] of longint; 4 function surface:extended;inline; 5
HansBug
2018/04/10
6910
计算三角形的面积
3.1首先,需要知道三角形是如何根据三边的长度计算面积的。在这里,就需要知道海伦公式。
算法与编程之美
2022/02/17
4710
建模 | 利用格林公式计算湖泊面积
一般来说,天然湖泊水域都是不规则的平面图形,如何计算它的面积呢。这里,利用格林公式来建立数学模型。格林公式的主要功能是构建曲线积分和曲面积分的关系。
fem178
2019/05/30
3.5K1
建模| 利用辛普森公式计算湖泊面积
如图1所示,建立坐标系XOY。横坐标n等分,x0 = a,x1 = a+h,x2 = a + 2h,... , xn = a + nh = b,h =(b - a)/n,纵坐标差值Δy0,Δy1,...,Δyn通过测量得到。
fem178
2020/04/21
2.7K0
建模| 利用辛普森公式计算湖泊面积
堆积木
题目描述 蒜头君有 n 块积木,编号分别为 1 到 n。一开始,蒜头把第 i 块积木放在位置 i。蒜头君进行 m 次操作,每次操作,蒜头把位置 b 上的积木整体移动到位置 a 上面。比如 1 位置的积木是 1,2 位置的积木是 2,那么把位置 2 的积木移动到位置 1 后,位置 1 上的积木从下到上依次为 1,2。
Enterprise_
2019/02/21
5840
封闭区域多边面积计算算法设计
过冷水最近遇到了这么一个问题,有一系列点组成了如上图所示的封闭图形,该如何求面积?
巴山学长
2021/03/15
1.1K0
Chimera-计算体积以及表面积
####1:单独测量分子体积或者表面积 >Select-Chain-A Action-Surface-Show
DrugScience
2021/02/04
1.7K0
Chimera-计算体积以及表面积
计算三角形面积
/* 功能:计算三角形面积 日期:2013-06-08 */ #include<stdio.h> #include<stdlib.h> #include<math.h> double countAreaOfTtriangle (double a,double b,double c); int main(void) { double a,b,c,area; printf("请输入三角形三条边的边长:"); scanf("%lf%lf%lf",&a,&b,&c); area = c
WindCoder
2018/09/20
5810
计算三角形的周长和面积
根据输入的三个数判断是否能组成一个三角形,如果可以就进行下一步的面积和周长的计算,周长就采用三条边相加,求面积就采用海伦公式去求,这样可以避免用一般的公式造成繁琐。
算法与编程之美
2022/02/17
5130
如何利用Origin计算曲线下面积
Origin是一款非常强大的绘图软件,可以来做各种科研用图。但是如果你想计算曲线下面积怎么办?怎么使用Origin来做呢?下图就是一条简单的直线,我们通过Origin的积分工具,就可以计算出其曲线下面积。
百味科研芝士
2020/11/13
12.2K0
如何利用Origin计算曲线下面积
利用向量积(叉积)计算三角形的面积和多边形的面积
利用向量积(叉积)计算三角形的面积和多边形的面积: 向量的数量积和向量积: (1)  向量的数量积 (1)  向量的向量积 两个向量a和b的叉积(向量积)可以被定义为: 在这里θ表示两向量之间的角夹角
Angel_Kitty
2018/04/08
6.2K0
利用向量积(叉积)计算三角形的面积和多边形的面积

相似问题

python堆积面积图

142

Silverlight图表-堆积面积与面积图表

10

R和堆积面积图?

20

多变量堆积面积图

17

堆积面积图不渲染

134
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文