有人能告诉我我做错了什么吗?我试图使用R在给定的向量上构建冒泡排序机制,但它会抛出一个错误。 v [1]指v的第一个元素,即6。
v <- c(6,2,5,8)
c <- 1
n <- length(v)
while(c <- n){
if(v[c + 1] < v[c]){
v[c] <- v[c] + v[c+1]
v[c+1] <- v[c] - v[c+1]
v[c] <- v[c] - v[c+1]
c <- c + 1
}else{
c <- c + 1
}
return(v)
}
答案 0 :(得分:1)
我通过Google搜索R的语法找到的语法错误:
在你的while循环中你说(c <- n)
。这应该是(c <= n)
答案 1 :(得分:0)
我认为你正在寻找这个:
sort(v)
干杯
答案 2 :(得分:0)
这是一段很长的时间,因为我编写了一个泡泡排序,但我仍然记得很清楚。有几种方法可以实现它,这是一个。
changed <- TRUE
while(changed){
changed <- FALSE
for(i in seq_along(v)[-length(v)]){
if(v[i] > v[i + 1]){
v[i] <- v[i] + v[i + 1]
v[i + 1] <- v[i] - v[i + 1]
v[i] <- v[i] - v[i + 1]
changed <- TRUE
}
}
}
v
[1] 2 5 6 8
至于你的例程,除了Jordy Brinks所说的之外,还有一个事实是你的while
循环只能通过向量进行一次传递,给你一个O(n)排序!算法错了......
你不应该把c <- c + 1
放在if/else
语句的两个分支上,把它放在它之后。