【问题标题】:sorting using bubble sort method in ruby在 ruby​​ 中使用冒泡排序方法进行排序
【发布时间】:2014-10-15 11:26:59
【问题描述】:

为什么我们需要对以下代码进行排序以在真假值之间交替?

def bubble_sort(arr)
    sorted = false

        until sorted 
            sorted = true
            (arr.count - 1).times do |i|
                if arr[i]  > arr[i + 1]
                    arr[i], arr[i + 1] = arr[i + 1], arr[i]
                    sorted = false
                end
            end
        end

        arr  

    end

【问题讨论】:

    标签: ruby arrays sorting


    【解决方案1】:

    当没有交换通过时,冒泡排序终止。此代码通过假设列表已排序开始传递:

    sorted = true
    

    但是,如果进行了交换,则确定列表根本没有排序:

    if arr[i]  > arr[i + 1]
      arr[i], arr[i + 1] = arr[i + 1], arr[i]
      sorted = false
    end
    

    在某种程度上,这个变量的名字是一个谎言,在短时间内:在倒数第二遍之后,最后一遍进行任何交换,“排序”是假的,即使数组是完全排序的。最后一次遍历排序数组,然后将“排序”设置为 true。

    【讨论】:

    • “冒泡排序在没有交换的情况下通过”。回答了我心中的所有问题。非常感谢。
    • @TesfaZelalem 不客气。如果您愿意,可以单击一个复选标记将此答案标记为“已接受”。
    猜你喜欢
    • 2016-09-06
    • 2019-05-10
    • 2017-09-27
    • 1970-01-01
    • 2016-01-01
    • 2014-03-14
    • 2015-03-06
    • 2012-06-20
    • 2011-01-02
    相关资源
    最近更新 更多