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没问题,我很感谢你的更正。事实上,我对渐进式行话不是很有条理,尽管我有自己的工作理念。如果你愿意,你可以编辑我的答案:)