在ruby中不使用.sort进行排序
不使用.Sort方法对两个排序数组的元素进行排序,并将排序后的元素放入RUBY中的新数组中 我有两个数组,如下所示:在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
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
。