Может ли кто-нибудь объяснить мне, что именно делает этот основной код в сортировке слиянием, и я был бы признателен за это - PullRequest
1 голос
/ 03 ноября 2019

Поскольку шаг один и шаг два (шаг третий) выглядят как запускаемые несколько раз. Может кто-нибудь сказать мне, почему он должен быть скомпилирован таким образом.

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

1 Ответ

1 голос
/ 03 ноября 2019

«Шаг первый» выполняет объединение двух исходных массивов в место назначения. Когда L или R исчерпан, в другом исходном массиве могут остаться незакрытые элементы. «Второй шаг» существует для копирования любых оставшихся элементов из L в место назначения. «Шаг третий» служит той же цели для R.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...