【问题标题】:Bubble sort solution explanaition冒泡排序解决方案说明
【发布时间】:2015-03-18 01:27:11
【问题描述】:

在线阅读什么是冒泡排序后,我觉得我很了解它,但是有人给我的解决方案并不完全直观。

以下是创建使用冒泡排序方法对数组进行排序的方法的解决方案:

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

我很难理解“排序”一词在这里的作用。我知道有一个 .sort 方法,但我找不到任何排序方法,而且循环如何知道如何结束并不完全清楚。

有人可以解释一下“排序”一词发生了什么吗?

【问题讨论】:

  • 它是一个变量。不是方法。

标签: ruby sorting bubble-sort


【解决方案1】:

sorted是一个布尔变量,用于指示排序是否完成。

最初,sorted 设置为 false(假设数组尚未排序)。主(外)循环的入口条件检查sorted 是真还是假,如您所见,循环一直持续到sorted 为真。

每次通过外循环时,sorted 都会开始设置为 true。但随后内部循环检查数组中是否有任何不正确顺序的值,如果不正确则交换它们,并将sorted 设置为false。

只有当内部循环遍历整个数组而不需要交换任何值时,sorted 才保持为真并且外部循环退出。

【讨论】:

  • 谢谢!我现在明白了。
【解决方案2】:

它不是一个方法,它是一个局部变量。特别是,这些类型的变量称为标志。它在相对少量的替代值之间切换以保持算法的内部状态。在这种情况下,它在falsetrue之间切换,用于控制是否退出until循环。

【讨论】:

    猜你喜欢
    • 2021-07-09
    • 2019-01-25
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    相关资源
    最近更新 更多