[英]Trying to sort a vector of elements in R
有人能告訴我我做錯了什么嗎? 我試圖使用 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)
}
我從谷歌搜索 R 的語法中發現的一個語法錯誤:在你的 while 循環中你說(c <- n)
。 這應該是(c <= n)
我想你正在尋找這個:
sort(v)
干杯
我已經很久沒有編寫冒泡排序程序了,但我仍然記得很清楚。 有幾種方法可以實現它,這里是一種。
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
語句的兩個分支上,把它放在后面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.