簡體   English   中英

在R中使用for循環進行冒泡排序

[英]Bubble sort using for loop in R

我正在學習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

第三名:8 19 20 31 46(正確的一個)

除了打印最后一個元素外 ,此循環執行第一個回合

我也不知道該如何解決其他“轉彎”。 我預測這與另一個for循環有關,但我不知道如何實現。

您要迭代直到x的最后一個元素,但要使用x[i] > 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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM