我正在尝试编写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)
任何人都可以帮我完成'#'部分吗?
答案 0 :(得分: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
}