Algorithm 合并排序';递归版本中的运行时间
我了解到合并排序的时间函数就在下面Algorithm 合并排序';递归版本中的运行时间,algorithm,time-complexity,mergesort,Algorithm,Time Complexity,Mergesort,我了解到合并排序的时间函数就在下面 T(n) = 2T(n/2) + Θ(n) if n>1 我理解为什么T(n)=2T(n/2)+A 但是为什么A=Θ(n) 我认为A可能是划分时间,但我不明白为什么它被表示为Θ(n) 请帮忙 不,A不是分割步骤A是线性的合并步骤 void merge(int a[], int b[], int p, int q, int c[]) /* Function to merge the 2 arrays a[0..p} and b[0..q} into ar
T(n) = 2T(n/2) + Θ(n) if n>1
我理解为什么T(n)=2T(n/2)+A
但是为什么A=Θ(n)
我认为A
可能是划分时间,但我不明白为什么它被表示为Θ(n)
请帮忙 不,A不是分割步骤A是线性的合并步骤
void merge(int a[], int b[], int p, int q, int c[])
/* Function to merge the 2 arrays a[0..p} and b[0..q} into array c{0..p + q} */
{
int i = 0, j = 0, k = 0;
while (i < p && j < q) {
if (a[i] <= b[j]) {
c[k] = a[i];
i++;
}
else {
c[k] = b[j];
j++;
}
k++;
}
while (i < p) {
c[k] = a[i];
i++;
k++;
}
while (j < q) {
c[k] = b[j];
j++;
k++;
}
}
void合并(inta[],intb[],intp,intq,intc[]
/*函数将两个数组a[0..p}和b[0..q}合并为数组c{0..p+q}*/
{
int i=0,j=0,k=0;
而(i如果我理解,谢谢!不客气。如果答案解决了你的问题,就接受它。我绝对想要它,但我不知道“接受”按钮在哪里。t\u。我怎么做@오충현 在这里你会发现如何接受答案:@pjs很好。我没有注意到n
这个事实。我会使用不同的方法notation@pjs没问题,我很感谢你的更正。事实上,我对渐进式行话不是很有条理,尽管我有自己的工作理念。如果你愿意,你可以编辑我的答案:)