簡體   English   中英

嘗試對 R 中的元素向量進行排序

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

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