【问题标题】:Bubble sort using for loop in R在R中使用for循环进行冒泡排序
【发布时间】:2017-08-16 10:08:46
【问题描述】:

我正在学习 R 中的基本算法。我想使用 for 循环创建冒泡排序算法。

x <- c(20,31,8,46,19) 
for (i in 1:length(x)){

  if (x[i] > x[i+1]){
    temp <- x[i]
    x[i] <- x[i+1]
    x[i+1] <- temp
    cat(x[i],"")
   }
  else   cat (x[i],"")
}

我认为在这个特定的向量中,排序应该在三个“回合”中进行。

第一个应该给出结果:20 8 31 19 46

第二:8 20 19 31 46

3rd:8 19 20 31 46(正确的一个)

这个循环在第一轮运行,除了打印最后一个元素。

我也不知道如何计算出其他“转弯”。我预测它与另一个 for 循环有关,但我不知道如何实现它。

【问题讨论】:

标签: r algorithm sorting


【解决方案1】:

您将迭代直到x 中的最后一个元素,但使用x[i] &gt; x[i+1]。因此,在最后一次迭代中,x[x+1] 超出了范围。查看这段代码,它只处理length(x)-1 迭代,并添加了一个从向量后面到前面的外部循环。

bubblesort <- function(x) {
  for (j in (length(x)-1):1) {
    for (i in j:(length(x)-1)) {
      if (x[i] > x[i+1]) {
        temp <- x[i]
        x[i] <- x[i+1]
        x[i+1] <- temp
      }
    }
  }
  return(x)
}

x <- c(20,31,8,46,19)
print(x)
print(bubblesort(x))

【讨论】:

  • 有没有办法不使用函数来做到这一点?
猜你喜欢
  • 2017-05-26
  • 2016-07-03
  • 2013-02-25
  • 2020-07-14
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多