|
实话实说没打看明白,我抛砖引玉吧,mergesort算法,不知道你想要的是不是这个
a <- -10:10
b <- 2:8
checkSort <- function(x) {
result = TRUE
for (i in 1:(length(x) - 1)) {
for (j in (i + 1):length(x)) {
if (x[j - 1] > x[j]){
result <- FALSE
break
}
}
}
return(result)
}
mergesort <- function(a, b) {
if (checkSort(a) & checkSort(b)){
a.length <- length(a)
b.length <- length(b)
n <- a.length + b.length
result.vec <- rep(0, n)
i <- 1
j <- 1
k <- 1
while(i <= a.length & j <= b.length){
if(a <= b[j]) {
result.vec[k] <- a
i <- i +1
k <- k + 1
} else {
result.vec[k] <- b[j]
j <- j + 1
k <- k + 1
}
}
while(i <= a.length) {
result.vec[k] <- a
i <- i +1
k <- k + 1
}
while(j <= b.length) {
result.vec[k] <- b[j]
j <- j + 1
k <- k + 1
}
return(result.vec)
} else {
cat("please input two sorted vectors")
}
}
mergesort(a, b)
|