
迭代算法的时间复杂度
我试图找到该算法的时间复杂度。迭代:算法从输入的位串产生给定汉明距离内的所有位串。它生成所有递增的序列0 <= a[0] < ... < a[dist-1] <strlen(num),并还原相应索引处的位。该向量a应该保留必须反转位的索引。因此,如果a包含当前索引i,我们将输出1而不是0,反之亦然。否则,我们按原样打印该位...
2024-01-10
矩阵乘法算法时间复杂度
我想出了用于矩阵乘法的算法。我在某处读到矩阵乘法的时间复杂度为o(n ^ 2)。但我认为我的算法会得出o(n ^3)。我不知道如何计算嵌套循环的时间复杂度。所以请纠正我。for i=1 to n for j=1 to n c[i][j]=0 for k=1 to n c[i][j] = c[i][j]+a[i][k]*b[k][j]回答:天真的算法是O(n ^ 3),这是您在...
2024-01-10
Prim的算法时间复杂度
我在Wikipedia条目中查找Prim的算法,发现它的邻接矩阵的时间复杂度为O(V^ 2),堆和邻接列表的时间复杂度为O(E lg(V)),其中E为边数,V是图形中的顶点数。由于Prim算法用于更密集的图中,因此E可以接近V ^ 2,但是当这样做时,堆的时间复杂度变为O(V ^ 2 lg(V)),大于O(V ^2)。显然,堆将仅...
2024-01-10
如何计算回溯算法的时间复杂度?
如何计算这些回溯算法的时间复杂度,并且它们具有相同的时间复杂度?如果不同怎么办?请详细解释,并感谢您的帮助。1. Hamiltonian cycle: bool hamCycleUtil(bool graph[V][V], int path[], int pos) { /* base case: If all vertices are included in Hamiltonian Cycle */ if (pos == V) { ...
2024-01-10
如何计算冒泡排序时间复杂度
我试图理解数据结构和不同的算法,然后感到困惑,无法测量冒泡排序时间的复杂性。for (c = 0; c < ( n - 1 ); c++) { for (d = 0; d < n - c - 1; d++) { if (array[d] > array[d+1]) /* For descending order use < */ { swap = array[d]; array[d] = array[d+1]; array[d+1] = swap;...
2024-01-10
2 ^ n复杂度算法
我需要实现和测试2 ^ n复杂度的算法。我一直在努力寻找一个。如果有什么办法,我可以通过实现来达到目的-精确的2 ^n复杂度将是最佳选择。如果有人知道某个位置,我可以找到一个示例,或者可以帮助我实现一个示例,那就太好了了:-)。基本操作可以是任何内容,但只能使用i++之类的单个语句;最...
2024-01-10
算法-未排序数组中删除的时间复杂度
假设有一个未排序的数组A,它包含一个元素x(x是元素的指针),并且每个元素都有一个附属变量k。因此,我们可以获得以下时间复杂度(最坏的情况):如果我们要 特定的K,则它的成本为O(n)。如果我们要 一个元素,那么它的成本为O(1),因为A只是将元素添加到末尾。如果我们知道x,然后...
2024-01-10
空算法的时间复杂度是否为O(0)?
因此,给出以下程序:该程序的时间复杂度是否为O(0)?换句话说,是0 O(0)吗?我以为在一个单独的问题中回答这个问题将使这个问题更加清晰。编辑:这里有很多好的答案!我们都同意0是O(1)。问题是,0 O(0)也是吗?回答:从维基百科:用大O表示法描述功能通常仅提供功能增长率的上...
2024-01-10
查找所有组合的算法的时间复杂度是多少?
给定两个整数n和k,返回1 … n中k个数字的所有可能组合。 ,如果n = 4且k = 2,则解为:[ [2, 4], [3, 4], [2, 3], [1, 2], [1, 3], [1, 4],] ,时间复杂度= O(n ^ k),则输入n和k。 ,时间复杂度= O(C(n,k) k)= O((n!/(k!(n-k)!)) k),n和k被输入, 因为每次当我们得到一个组合时...
2024-01-10
Eratosthenes算法的筛选时间复杂度
从维基百科:该算法的复杂性是 O(n(logn)(loglogn))位运算。包含loglogn术语的复杂性告诉我在sqrt(n)某个地方。假设我在前100个数字(n =100)上运行筛子,假设将数字标记为复合数字需要固定的时间(数组实现),那么我们使用的次数mark_composite()将类似于n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2)并且...
2024-01-10
检测重叠时间段的算法
我必须检测两个时间段是否重叠。每个期间都有一个开始日期和一个结束日期。我需要检测我的第一个时间段(A)是否与另一个时间(B / C)重叠。在我的情况下,如果B的开头等于A的结尾,则它们不重叠(也为反),我发现以下情况:所以实际上我是这样做的:tStartA < tStartB && tStartB < tEndA //For case 1...
2024-01-10
整数时间复杂度的位计数算法(Brian Kernighan)
有人可以解释为什么Brian Kernighan的算法采用O(log N)来计数整数中的设置位(1s)。下面是该算法的简单实现(在JAVA中)int count_set_bits(int n){ int count = 0; while(n != 0){ n &= (n-1); count++; } return count;}我了解如何通过将最右边的设置位一一清除直到变为0来了解它的工作原理,但是我...
2024-01-10
算法复杂度和安全性:MD5还是SHA1?
据我所知, md5 比 sha1 快,但是 SHA1 比md5更复杂。我有什么想念的吗?回答:首先,MD5已损坏-您可能会产生冲突,因此MD5不应用于任何安全性应用程序。不知道SHA1被破坏,并且被认为是安全的。除此之外-是的,MD5速度更快,但具有128位输出,而SHA1具有160位输出。 SHA1已破:一个研究小组在谷歌和...
2024-01-10
用于计算Java代码的big-O时间复杂度的工具吗?
我有一个关于Java软件的时间复杂度(大O表示法)的问题。有没有一种快速计算或测试它的方法(或者欢迎任何可以为我计算它的网站)。例如,我想检查一下以下代码片段,并且可能还会进行改进:int dcount = 24423567;int a = 0;if (dcount == 0){ a = 1;}String ds = Integer.toString(dcount);String[] sa = ds.split("(?<=.)")...
2024-01-10
算法何时是O(n + m)时间?
我在黑客级别上解决了这个问题。我解决问题的算法是:获取所有玩家分数的数组。遍历所有玩家分数并创建一个新数组。总共有n位玩家。 不包含任何重复的玩家得分。让我们将新数组称为playerScores。让爱丽丝演奏的总级别为m。让爱丽丝在第一轮后的得分为S。令爱丽丝的初始等级R为0。从后端...
2024-01-10
算法最坏情况下运行时间的上限与下限
我正在学习算法分析。我了解算法 最坏情况下运行时间 的概念。但是,算法在最坏情况下的运行时间的上限和下限是什么?有什么可以其中一个示例 上限 用于运行算法的时间最坏的情况下是不同的距离 下限 为运行相同的算法的时间的最坏情况?回答:对于一个函数f(n),如果对于一个“常量n” ,...
2024-01-10
预约调度算法(N个人有N个空闲时段,约束满足)
我们有一个雇主想要采访N个人,因此要安排N个采访位。每个人都有一个忙碌的时间表。给出一种算法,如果可能的话,将N个人安排到N个插槽中,如果不可能,则返回一个标志/错误/等。最快的运行时复杂度是多少?天真:有N!安排N个人的方法。检查所有这些对象,对于每个排列,检查是否可行。...
2024-01-10
为什么数组插入的时间复杂度是O(n)而不是O(n + 1)?
我刚刚开始学习数据结构,并且在进行数组插入时想知道为什么数组插入的时间复杂度为O(n)而不是O(n + 1)?在最佳情况下,当插入在最后时,时间复杂度为O(1)。我想我们正在考虑1插入元素,因为这里没有元素被移动。在最坏的情况下,假设我们必须移动n个元素然后插入新元素,那么时间时间...
2024-01-10
双for循环的运行时间复杂度
我对以下算法有些困惑。特别是,我不明白为什么第一个是O(n),第二个是O(n ^2)。我唯一的直觉是,第一个算法的内部和外部循环未“链接”。其次,我可以直观地看到第二种算法是O(n ^2),但是我们将如何找到一些常数c1,c2来证明f(n)是n ^ 2的big-0和little-0?sum = 0;for (int i = 0; i < n; i++) fo...
2024-01-10
T(n)= T(n-1)+ 1 / n的渐近复杂度
有一种算法具有时间复杂性 T(n)=T(n-1)+1/n if n>1 =1 otherwise我正在解决其渐近复杂性,并将阶数设为“ n”,但给出的答案是“ log n”。这是正确的吗?如果是log n,那为什么呢?回答:可以很容易地看到(或用归纳法正式证明),对于从1到n的k值,T(n)是1 / k的和。这是 n次谐波数,H n ...
2024-01-10
为什么选择算法的运行时间为O(n)?
根据Wikipedia的介绍,基于分区的选择算法(如quickselect)的运行时为O(n),但我不相信它。谁能解释为什么O(n)?在常规快速排序中,运行时为O(n log n)。每次将分支划分为两个分支(大于支点,小于支点)时,我们都需要在 分支中继续执行该过程,而quickselect只需要处理 分支。我完全理解这些观点。但...
2024-01-10
如何比较两个数组中每个元素的时间复杂度小于O(n ^ 2)
假设我们有两个数组A [n]和b[n],目标是将A中的每个元素与B中的元素进行比较。然后返回一个列表结果[n],该结果记录了A中每个元素的数量大于B中的元素。例如,A = [38,24,43,3],B = [9,82,10,11]由于38大于9、10和11,因此result [0]为3。然后结果为[3、3、3、0]。如果您可以提供一些伪代码,那...
2024-01-10
C#-解决复杂的ODE集
某些ODE集无法用解析法求解。在这种情况下,有很多众所周知的方法,尤其是在像MATLAB这样的典型科学软件中。只要您坚持使用,一切都很好。但是,如果您尝试将此功能移植到其他环境,则问题就开始了。就我而言,我在C#中需要它。 当然,有一些ODE的C#库,但是在大多数情况下(至少在我所熟...
2024-01-10
文艺复兴的时间
1、文艺复兴时间:14世纪—16世纪。 2、“文艺复兴”的概念在14-16世纪时已被意大利的人文主义作家和学者所使用。当时的人们认为,文艺在希腊、罗马古典时代曾高度繁荣,但在中世纪“黑暗时代”却衰败湮没,直到14世纪后才获得“再生”与“复兴”,因此称为“文艺复兴”。 3、文...
2024-01-10
从集合构造PriorityQueue的时间复杂度是多少?
Java的PriorityQueue构造函数与的复杂度是Collection多少?我使用了构造函数:PriorityQueue(Collection<? extends E> c)复杂度是O(n)还是O(n * log(n))?回答:PriorityQueue从集合(甚至是未排序的集合)初始化a的时间复杂度为O(n)。在内部,它使用一个过程siftDown()来就地“堆化”数组。(这在文献中也称为下...
2024-01-10
