ruby - 我的冒泡排序代码中的错误在哪里?

标签 ruby bubble-sort

我看到有更好的 ruby​​ 冒泡排序代码已经发布在诸如这里的地方: Using the Bubble sort method for an array in Ruby 但是我在调​​试我当前的代码时遇到了麻烦,如果能帮助我找出为什么我的代码不起作用,我将不胜感激。谢谢。

def bubble_sort(arr)
    original = arr
    x = 0
    while x < arr.count - 1
        if arr[x] < arr[x + 1]
            y = arr[x + 1]
            arr[x + 1] = arr[x]
            arr[x] = y
        end
        x += 1
    end
    if original == arr
        return arr
    else
        return bubble_sort(arr)
    end 
end

最佳答案

其中一个问题是:

original = arr

您希望 originalarr 当前状态的副本,对吗?好吧,不。它们将指向同一个数组。这就是为什么你的函数永远不会在这里递归:

if original == arr
    return arr
else
    return bubble_sort[arr]
end 

要复制数组,使用dup

original = arr.dup

关于ruby - 我的冒泡排序代码中的错误在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23830407/

相关文章:

ruby - 为什么 const_missing 不在其前面加上 Object 就不能工作?

ruby - OptionParser 中的 Nil 参数

python - 冒泡排序算法中的循环到底是如何工作的? (Python 3)

c++ - 我如何获得另一个柜台?

java - 将冒泡排序作为单独的数组返回

java - 如何在 Java 中对文本文件进行冒泡排序

ruby - 未初始化的常量 Selenium::WebDriver::Chrome::Options (NameError)

html - 对于 Ruby 和/或 Ruby on Rails,这就是非编码人员提出的问题

c - 冒泡排序在 C 中不排序(Cormen 的伪代码)

Ruby:使用 JSON 正文 PUT 请求?