Объединить и отсортировать любые два отсортированных массива в R - PullRequest
1 голос
/ 29 февраля 2020

Я думаю, что у меня есть логика c для объединения двух отсортированных векторов, но я не знаю, почему это занимает очень много времени для вычисления даже с небольшими векторами. Поскольку при запуске этого кода нет ошибок, я ищу указатели на то, в чем заключается проблема. Я хочу, чтобы эта функция работала с большими векторами, и, следовательно, хочу, чтобы она также была вычислительно эффективной.

Вот код, с которым я работаю: Код, измененный на основе обсуждавшихся предложений: Работает, но работает не так, как ожидалось.

a <- seq(2, 100, 10)
b <- seq(3, 100, 15)

mergeSort2vectors = function(a, b){
n1 <- length(a)
n2 <- length(b)

c <- rep(NA, n1+n2)

i = 1
k = 1
n3 <- min(n1, n2)

while(i <= n3){
    if (a[i] < b[i]){
        c[k] = a[i]
    } else{
        c[k] = b[i]
    }
    i = i+1
    k = k+1
}

if(n1 > n2){
    c[(n3+1): n1+n2] <- a[(n3+1): n1]
} else {
    c[(n3+1): n1+n2] <- b[(n3+1): n2]
}
c}



sorted <- mergeSort2vectors(a,b)

Я хочу, чтобы отсортированный вектор в этом примере был 2, 3, 12, 18, 22, 32, 33, 42, ..., 93.

...