因此,我对ruby还是陌生的,她试图编写代码来查找数组中前两个乱序的元素并交换它们。我写了这段代码,但是运行时只打印出3个。范有人帮我重写代码使其正常工作吗?谢谢!
arr = [5, 22, 29, 39, 19, 51, 78, 96, 84]
i = 0
while (i < arr.size - 1 and arr[i] < arr[i + 1])
i = i + 1 end
puts i
arr[i] = arr[i + 1]
arr[i + 1] = arr[i]
您可以编写以下内容:
arr = [5, 22, 29, 39, 19, 51, 78, 96, 84]
i = (0..arr.size-2).find { |i| arr[i] > arr[i+1] }
#=> 3
arr[i], arr[i+1] = arr[i+1], arr[i] if i
#=> [19, 39]
arr
#=> [5, 22, 29, 19, 39, 51, 78, 96, 84]