蛮力选择排序

时间:2016-03-18 02:55:01

标签: r brute-force selection-sort

我正在尝试编写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)

任何人都可以帮我完成'#'部分吗?

我还附加了伪代码 enter image description here

1 个答案:

答案 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
}