Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 气泡排序解解释_Ruby_Sorting_Bubble Sort - Fatal编程技术网

Ruby 气泡排序解解释

Ruby 气泡排序解解释,ruby,sorting,bubble-sort,Ruby,Sorting,Bubble Sort,在网上阅读了什么是泡泡排序后,我觉得我很理解它,但是有人给我的解决方案并不是完全直观的 以下是创建使用气泡排序方法对数组进行排序的方法的解决方案: 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],

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

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

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方法,但我找不到任何排序的方法,也不完全清楚循环如何知道如何结束


有人能再解释一下“排序”这个词发生了什么吗?

它不是一个方法,而是一个局部变量。特别是,这些类型的变量称为标志。它在相对较少的可选值之间切换,以保持算法的内部状态。在这种情况下,它在
false
true
之间切换,并用于控制是否从
直到
循环中退出。

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

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

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


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

它是一个变量。不是方法,谢谢!我现在明白了。