谁能为我解释在合并排序中核心代码到底在做什么,对此我将不胜感激

问题描述 投票:0回答:1

因为第一步和第二步(第三步)看起来像是重复运行。谁能告诉我为什么要这样编译。

    int i = 0, j = 0; 
    int k = l; 
    while (i < n1 && j < n2) {     ----step one
        if (L[i] <= R[j]){ 
            arr[k] = L[i]; 
            i++; 
        } 
        else{ 
            arr[k] = R[j]; 
            j++; 
        } 
        k++; 
    } 
    while (i < n1){             ---step two
        arr[k] = L[i]; 
        i++; 
        k++; 
    } 
    while (j < n2){         ----step three
        arr[k] = R[j]; 
        j++; 
        k++; 
    } 
}
java arrays algorithm loops divide-and-conquer
1个回答
0
投票

“第一步”完成了将两个源阵列合并到目标中的工作。当LR用尽时,另一个源数组中仍可能剩余元素。存在“第二步”以将所有剩余元素从L复制到目标。 “第三步”对于R具有相同的作用。

© www.soinside.com 2019 - 2024. All rights reserved.