我试图将我的数字数组从最小到最大排序,而不使用内置的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]
但我也想要那些中间数字。我尝试使用我的数组中第一个和最后一个数字的范围,并将该范围与我的数组进行比较,以查看它是否包含数组中的数字。
答案 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
来工作。然后从剩余数字数组中删除该数字。它重复这一点,直到没有数字为止。