【发布时间】:2017-04-02 14:34:59
【问题描述】:
我有以下数组:
a = [0, 1, 2, 3, 4, nil, nil]
我想在索引 2 中插入一个元素 num,这样结果数组就是:
a = [0, 1, num, 2, 3, 4, nil] # note the size hasn't changed
我意识到数组可能不是最适合本练习的数据结构,但假设这是一个要求。
我该怎么做?
为什么?
我正在尝试解决这个问题:
给定两个排序数组 A 和 B,其中 A 在末尾有足够大的缓冲区来容纳 B。编写一个方法将 B 按排序顺序合并到 A 中
到目前为止,这是我的代码:
def merge(a, b) # merge b -> a
pointer = 0 # on a
while !b.empty? do
case b.first <=> a[pointer]
when 0, 1 next
when -1
# insert element, shift array to the right
end
end
end
【问题讨论】:
-
你真的需要 nils 吗?描述你的确切目的可能有助于人们更好地回答。
-
已编辑详细信息
-
值得注意的是,这不是我提到的问题的最佳解决方案。最好将 a & b 中的元素排序到 a 的末尾,最大的在前。这样,就不需要换档了
-
如果您对
a & b进行排序,则会丢失对a和b进行排序的信息。最有效的方法是使用一个空的c数组。移位非常昂贵,合并排序不需要。
标签: ruby