【发布时间】:2017-03-26 06:41:13
【问题描述】:
def bubble_sort(a)
something_changed = false
swap = 0
a[0...-1].each_with_index do |num, i|
if a[i] > a[i + 1]
a[i], a[i + 1] = a[i + 1], a[i]
something_changed = true
swap += 1
end
end
bubble_sort(a) if something_changed
p swap
end
arr = [50, 60, 70, 20, 30, 10]
bubble_sort(arr)
# 0
# 1
# 1
# 3
# 3
# 3
所以我已经做了很长一段时间,并尝试了各种方式。我已经设法理解了数组是如何通过冒泡排序进行排序的,并且我知道对于这个特定的数组,要对数组进行排序有 11 次替换。每次该方法递归运行时,我都可以打印出所有交换次数,但是对于我的一生,我无法将这些数字分组到一个数组中,因此我可以添加它们并显示 11,任何见解都会很棒.我已经在 python 中完成了解决方案,它工作正常,我只想知道是否有一种方法可以将这些数字组合在一起,因为该方法正在递归运行。提前致谢。
【问题讨论】:
标签: arrays ruby algorithm sorting recursion