Ruby交换两个元素的数组排序问题

问题描述 投票:0回答:1

因此,我对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]
arrays ruby selection-sort
1个回答
0
投票

您可以编写以下内容:

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] 
© www.soinside.com 2019 - 2024. All rights reserved.