ruby - 请帮我解释如何在不使用 Array#sort Ruby 的情况下对数组进行排序
问题描述
bubble_sort 方法应该接受一个数字数组并按升序排列元素。该方法应返回数组。我了解交换部分,但并不真正了解真假的翻转以及它们最初存在的原因。最好逐行解释以帮助我理解这一点。
不要使用内置
Array#sort
def bubble_sort(arr)
sorted = false
while !sorted
sorted = true
(0...arr.length-1).each do |i|
if arr[i] > arr[i+1]
arr[i], arr[i+1] = arr[i+1], arr[i]
sorted = false
end
end
end
arr
end
p bubble_sort([2, 8, 5, 2, 6]) # => [2, 2, 5, 6, 8]
p bubble_sort([10, 8, 7, 1, 2, 3]) # => [1, 2, 3, 7, 8, 10]
解决方案
你交换一些东西的原因是你知道数组还没有排序。在已经排序的数组中,你永远不会交换任何东西。sorted = false
只是记录了这个事实。
推荐阅读
- php - 在 Aliseeks api 上进行身份验证的 cURL post api 调用
- java - @Autowire 如何在不使用 @Bean 注解的情况下获取 spring bean
- c# - 404 方法未找到数据
- javascript - 文件的同源策略 - iFrame 的问题
- c# - Visual Studio Code C# 调试问题
- c# - 使用 TypenameHandling.All 和 List 进行模式验证
- spring-boot - “如何改变休息反应”
- event-handling - 将自定义 UIKit 控件中的自定义 UIKit 事件暴露给 SwiftUI
- python - 如何在 Python 2 到 3 升级中修改“{:<25}”格式
- python - 使用隔离森林对分类数据进行异常检测