我设计了一个算法,将10的幂转换为二进制,假设n是2的幂。我使用高斯方法来利用这个很好的方法的快速运行时间。为此,我将n除以2,并将其发送到Gauess方法,如下所示:
changetoBinary(n)
if n=1
return binary of 10 which is 1010
else
return gauess(n/2,n/2)
很明显,猜测方法将首先分裂,然后征服,然后合并。最后,我们将数字更改为二进制。现在我的问题是关于算法的运行时间:我的理解是,由于猜测运行时间是θ(n^log3(Base2)),我们可以说这个算法的运行时间也是相同的,因为大多数工作都是由Gue
通常,当分析算法的运行时间时,我处理的是影响运行时间的单个输入。我正在尝试理解当有2个或更多的输入影响运行时间时,如何表示T(n)。 例如,在最坏情况下的线性搜索中: function LinearSearch(arr, N, x)
for (i = 0; i < N; i++) ---> C1*N + C2
if arr[i] = x ---> C3*N
return true
return false --->
/*
Returns true is the two strings are permutations of each other.
Time Complexity; O(nlog n) -> because of the java utils array sort
Space Complexity; O(1)
*/
public boolean isPermutationOptimized(String one, String two) {
if (one.length() != two.length()) {
return
我对big-o还很陌生,我想弄清楚这一小段代码的大o运行时间是多少。我知道通常情况下,如果有,但是整个数组的事情会改变什么吗?我很困惑,所以任何一点的输入都是很好的。提前感谢!
public apple(int n)
{
int n = 0;
int apple = 0;
a = apple + n;
}
请考虑下面的合并排序算法。在这里,我们从一个除法部分开始,它将数组分成两半,并分别对每一半进行递归操作。为了降低复杂度,我忽略了算法的合并部分。
function mergeSort(unsortedArray)
{
let midpoint = Math.floor(unsortedArray.length/2);
if(unsortedArray.length == 1)
{
return unsortedArray;
}
let leftArray = mergeSort(unsortedArray.slice(0,midpoint));
let r
最近我一直在学习算法设计,它涉及到在哪里获得增长的顺序(如果我错了)。我已经看到从插入排序到运行时间,这是为了计算算法,也许这是最坏的情况。问题是我不能理解如何找到n。例如:
print "Hello"
for i = 0 to n:
print i * 1
print "end of program"
所以,如果我想要计算运行时间,我应该如何得到n并计算T(n)。问题是我相信我不理解基本原理。我用谷歌搜索了一下,没有什么能让我满意,而且我也不明白。
谢谢。
我已经看到,在大多数情况下,时间复杂性与空间复杂性有关,反之亦然。例如,在数组遍历中:
for i=1 to length(v)
print (v[i])
endfor
这里很容易看出算法的时间复杂度是O(n),但在我看来,空间复杂度也是n(也表示为O(n)?)。
我的问题是:算法是否可能具有与空间复杂度不同的时间复杂度?
def mysort1(x):
y = list(x)
y.sort()
z = [0]*len(y)
for i in range(0, len(y)):
z[i] = y[i]
return z
def mysort2(x):
y = list(x)
y.sort()
z = []
for i in range(0, len(y)):
z.insert(0,y[len(y)-i-1])
return z
考虑到两种方法的循环次数都是n次,我认为这两种方法都具有线性时间复杂度。
Kruskal的算法如下:
MST-KRUSKAL(G,w)
1. A={}
2. for each vertex v∈ G.V
3. MAKE-SET(v)
4. sort the edges of G.E into nondecreasing order by weight w
5. for each edge (u,v) ∈ G.E, taken in nondecreasing order by weight w
6. if FIND-SET(u)!=FIND-SET(v)
7. A=A U {(u,v)}
8. Union
我试图了解是否有任何替代蛮力算法(或轻微的改进/最坏的性能比幼稚的蛮力算法)仍然将导致O(N^2)的时间复杂性和O(1)辅助空间。
这是我的蛮力伪码:
procedure distinct(Input: array)
for i=0 to i < length of array
for j=i+1 to j < length of array
if array[i] ==