Я думаю, что у меня есть логика 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.