首页 > 解决方案 > 这个 java while 循环在合并排序中做了什么?

问题描述

第一步和第二步(第三步)对我来说似乎是反复运行。为什么要这样编程?

    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++; 
    } 
}

标签: javaarraysalgorithmloopsdivide-and-conquer

解决方案


“第一步”完成从两个源数组合并到目标的工作。当LR耗尽时,可能仍有未合并的元素保留在另一个源数组中。存在“第二步”以将任何剩余元素复制L到目标。“第三步”的目的相同R


推荐阅读