冒泡排序 - Ruby未定义的局部变量或方法

时间:2014-06-04 18:49:33

标签: ruby arrays while-loop undefined bubble-sort

所以我决定编写一个bubble_sorts数组的程序。它需要数组的前两个元素,如果第一个元素小于第二个元素,则对它们进行排序。然后它移动到位置1和2的下两个元素,并对它们进行排序。

这是我的代码

num_array = [4,7,19,5,71,26,37,52,59,3]

def sort_array
  x = 0
  while num_array.find_index (x) < num_array.count
    if num_array[x] < num_array[x+1]
      num_array[x] = num_array[x]
    else
      num_array[x] = num_array[x+1]
    end
  x += 1
  end
end

我收到以下错误消息。

NameError: undefined local variable or method 'num_array' for main: Object

我不明白,我在第一行清楚地定义了变量num_array。

我可以使用

轻松地对数组进行排序
num_array.sort

但我想使用冒泡排序方法对其进行排序。

帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

num_array超出了范围。您应该将其设为全局变量$num_array或将其作为参数传递给sort_array。最后一个更好。

def sort_array!(num_array)
  x = 0
  while num_array[x] < num_array.count
    if num_array[x] < num_array[x+1]
      num_array[x] = num_array[x]
    else
      num_array[x] = num_array[x+1]
    end
    x += 1
  end

  num_array
end

num_array = [4,7,19,5,71,26,37,52,59,3]

puts sort_array!(num_array)