[英]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.