Выбор грубой силы
Я пытаюсь написать R-код для сортировки методом подбора. Но я не знаю, как написать часть min<- i и min <-j.
example <- function(x)
{
for (i in 1:(length(x)-1))
{
#min <- i
for (j in (i+1):(length(x)))
{
if (x[j] < x[(which.min(x))])
{
#min <- j
}
temp <- x[which.min(x)]
x[which.min(x)] <- x[i]
x[i] <- temp
}
}
x
}
x <-sample(1:100,10)
example(x)
Может кто-нибудь помочь мне закончить "#" часть?
1 ответ
min
это индекс следующего минимального элемента. Итак, это то же самое, что и использование which.min
без внутренней петли.
example <- function(x) {
for (i in 1:(length(x)-1)) {
mindex <- i # or, mindex <- which.min(x[(i+1):length(x)]) and remove the next loop
for (j in (i+1):(length(x))) {
if (x[j] < x[mindex])
mindex <- j
}
## swap
temp <- x[i]
x[i] <- x[mindex]
x[mindex] <- temp
}
x
}