0
我们的目标是了解插入排序如何找到并将数字插入到预先排序的数组中。我应该弹出数组中的最后一个数字,并将其插入数组中正确的时间顺序位置。建筑物插入排序。不知道我在做什么错
该代码似乎适用于第一个示例,但不是第二个。在第二个例子中,即使数组中有整数,正确答案似乎也出现在第四次迭代中。
这感觉就像我需要break
或return
并停止循环某处,但我不知道在哪里。
def insertionSort(ar)
count = ar.count
value = ar.pop
p ar << value if value >= ar.last
reversed = ar.reverse
ar.count.times do |index|
reversed.unshift(reversed.first) if reversed.count < count
if reversed[index + 1] > value
reversed[index] = reversed[index+1]
else
reversed[index] = value
end
puts reversed.reverse.join(' ')
end
end
ar = [2, 4, 6, 8, 3]
insertionSort(ar)
#=> 2 4 6 8 8
#=> 2 4 6 6 8
#=> 2 4 4 6 8
#=> 2 3 4 6 8
negatives = [-3, -6, 7, 8, 9, 5]
insertionSort(negatives)
#=> -3 -6 7 8 9 9
#=> -3 -6 7 8 8 9
#=> -3 -6 7 7 8 9
#=> -3 -6 5 7 8 9
#=> -3 5 5 7 8 9
“....其正确的时间地点......”我知道你的意思,但时间是不是在这里,正确的说法:) – FelixHJ 2014-12-07 23:14:22
第一行是supsicious:#=> 2 4 6 8 8即你有8次两次,我会从那里开始 – FelixHJ 2014-12-07 23:30:24