如何将两个数组交叉合并?如果是我的话,一般情况下,就会想到把一个数组中的元素迭代插入到另外一个数组,往往会忽略到数组扩容问题!造成性能上面的问题! 另外一种方法:新建一个长度是两个数组之和的新数组,并按照余数把两个数组插入新创数组,恰恰正好解决了这个问题。
利用数组 insert 方法把一个数组中的元素迭代插入到另外一个数组 方法一:
def test_one
a = [1,3,5]
b = [2,4,6]
b.each_with_index do |i,index|
a.insert(2*index+1,i)
end
a
end
新建一个长度是两个数组之和的新数组,并按照余数把两个数组插入新创数组 方法二:
def test_two(c)
a = [1,3,5]
b = [2,4,6]
c.each_with_index do |i,index|
c[index] = index % 2 == 0 ? a[index/2] : b[index/2]
end
end
测试两个方法的效率如下: 测试方法一:
def test_time
start = Time.now
1000000.times { test_one }
Time.now - start
end
测试方法二:
def test_time
start = Time.now
c = Array.new(6)
1000000.times { test_two(c) }
Time.now - start
end
具体耗时如何,请自己动手试试!