在ruby中不使用.sort进行排序

在ruby中不使用.sort进行排序,ruby,Ruby,不使用.Sort方法对两个排序数组的元素进行排序,并将排序后的元素放入RUBY中的新数组中 我有两个数组,如下所示: a = [1,4,6,9] b = [2,5,7,8] 我的输出应该是: c = [1,2,4,5,6,7,8,9] 我如何做到这一点?您可能希望利用要合并的两个数组已经排序的事实。这是一种方法: def merge_sort(a,b) ac, bc = a.dup, b.dup (a.size+b.size).times.each_with_object([]) d

不使用.Sort方法对两个排序数组的元素进行排序,并将排序后的元素放入RUBY中的新数组中

我有两个数组,如下所示:

a = [1,4,6,9]
b = [2,5,7,8]
我的输出应该是:

c = [1,2,4,5,6,7,8,9]

我如何做到这一点?

您可能希望利用要合并的两个数组已经排序的事实。这是一种方法:

def merge_sort(a,b)
  ac, bc = a.dup, b.dup
  (a.size+b.size).times.each_with_object([]) do |_,c|
    c <<
      case [ac.any?, bc.any?]
      when [true,true]  then (ac.first <= bc.first) ? ac.shift : bc.shift
      when [true,false] then ac.shift
      else                   bc.shift
      end
   end
 end

 a = [1,4,6,9]
 b = [2,5,7,8]    

 c = merge_sort a,b 
   #=> [1,2,4,5,6,7,8,9] 
def merge_排序(a、b)
ac,bc=a.dup,b.dup
(a.size+b.size)。次。每个带有_对象([])的|,c|

这里有一个函数可以帮助你做你想做的事情

def my_sort_function(a,b)
  n = a.length + b.length
  if a.length < b.length
    min = a.length
  else
    min = b.length
  end
  c=[]

    min.times do |i|
      if a[i] > b[i]
        c << b[i]
        c  << a[i]
      else
        c << a[i]
        c  << b[i]
        end
    end
  if min == a.length

    (c << b[(min)..(b.length-1)]).flatten!

  else
    (c << a[(min)..(a.length-1)]).flatten!

  end

  loop do
    swapped = false

    (n-1).times do |i|
      if c[i] > c[i+1]
        c[i], c[i+1] = c[i+1], c[i]
        swapped = true
      end
    end

    break if not swapped
  end
  c
end

a = [1,4,6]
b = [2,5,7,8]

puts a    #=> a:[1,4,6]
puts b    #=> b:[2,5,7,8]

c= my_sort_function(a,b)
puts c    #=> c:[1,2,4,5,6,7,8]
puts "sorting Done!"
def my_sort_函数(a、b)
n=a.长度+b.长度
如果a.长度b[i]

请添加您尝试过的内容以及您需要具体帮助的地方。但是我想先比较两个数组的元素,然后把它们添加到一个新的数组中,比如a={1,4,6,9}b={8,5,2,7}如果a[i]>b[i]推c[i]=b[i]推c[i]=a[i]如果b[i]>a[i]推c[i]=a[i]推c[i]=b[i]但是在你的问题中,你说这两个数组是被排序的,你可能想编辑这个问题考虑到我的两个数组a和b都是按数组排序的,比如a={1,4,6,9}和b={2,5,7,8}。非常感谢你,但我想把它存储在一个新的数组中。我不确定我是否理解你的意思,但我已经编辑了,在你的问题中使用了三个变量名:
a
b
c