如何在Ruby中从最小到最大排序数字

时间:2017-04-27 20:59:53

标签: ruby

我试图将我的数字数组从最小到最大排序,而不使用内置的sort()方法。

以下是我所拥有的:

def sort my_numbers
  new_array = []
  my_numbers.each() do | number|
    first = new_array.push(my_numbers.min)
    last = new_array.push(my_numbers.max)
    range_of_numbers = (first..last)

    if range_of_numbers.include?(number)
      new_array.push(number)
    end
    return new_array
  end
end


puts sort([5, 9, 2, 5, 2])

这给了我[2, 9]但我也想要那些中间数字。我尝试使用我的数组中第一个和最后一个数字的范围,并将该范围与我的数组进行比较,以查看它是否包含数组中的数字。

1 个答案:

答案 0 :(得分:0)

我能够得到类似的东西。

def sort my_numbers
  remaining_numbers = my_numbers.dup               # Don't change the original
  new_array = []
  my_numbers.each do
    number = remaining_numbers.min                 # Get smallest
    index = remaining_numbers.find_index number    # Find it's index
    remaining_numbers.delete_at index              # Delete at that index

    new_array.push(number)                         # Add it to the sorted array
  end

  return new_array
end

puts sort([5, 9, 2, 5, 2])

通过查找最小的未排序数字并将其附加到new_array来工作。然后从剩余数​​字数组中删除该数字。它重复这一点,直到没有数字为止。