ruby 快速排序代码
时间: 2023-09-03 18:26:34 浏览: 120
### 回答1:
Ruby 中的快速排序代码如下:def quick_sort(array) return array if array.length <= 1 pivot = array.delete_at(rand(array.length)) left, right = array.partition { |x| x < pivot } return *quick_sort(left), pivot, *quick_sort(right) end
### 回答2:
Ruby的快速排序算法如下:
```ruby
def quick_sort(arr)
return arr if arr.length <= 1 # 如果数组长度小于等于1,直接返回
pivot = arr.sample # 选择一个基准元素
less = arr.select { |item| item < pivot } # 小于基准的数组
equal = arr.select { |item| item == pivot } # 等于基准的数组
greater = arr.select { |item| item > pivot } # 大于基准的数组
return quick_sort(less) + equal + quick_sort(greater) # 递归调用快速排序,并将结果合并
end
arr = [5, 8, 2, 1, 10, 3]
sorted_arr = quick_sort(arr)
puts sorted_arr.to_s
```
这段代码使用了递归的方法实现快速排序。首先,选择一个基准元素,一般可以随机选择数组中的某个元素。然后,根据基准元素将数组分成3部分:小于基准的元素数组、等于基准的元素数组和大于基准的元素数组。接着,利用递归的方式分别对小于基准和大于基准的两个数组进行排序,再将三个部分的结果合并起来即可得到最终排序结果。
在上述代码中,通过使用select方法将数组元素按照与基准元素的大小关系分成不同的数组。最后,通过递归调用quick_sort方法对小于基准和大于基准的两个数组进行排序,并将结果进行合并返回。最终,输出排序后的数组。
### 回答3:
Ruby中的快速排序算法代码如下所示:
```ruby
def quick_sort(array)
return array if array.length <= 1
pivot = array.sample
less = []
equal = []
greater = []
array.each do |element|
if element < pivot
less << element
elsif element == pivot
equal << element
else
greater << element
end
end
return quick_sort(less) + equal + quick_sort(greater)
end
# 示例用法
array = [5, 2, 8, 4, 1, 9, 3, 6, 7]
sorted_array = quick_sort(array)
puts sorted_array
```
该代码使用递归的方式实现快速排序算法。首先,判断数组的长度是否小于等于1,如果是,则直接返回该数组。如果数组长度大于1,则从中选择一个基准元素(这里使用`sample`方法随机选择),并将数组分为小于、等于和大于基准元素的三个部分。然后将这三个部分分别递归地进行快速排序,最后将排序好的结果按照小于、等于、大于的顺序连接起来返回。
更详细的解释可以参考注释。以上是对快速排序算法的一个简单实现,可以应用于对数组进行排序。
阅读全文