Ruby归并排序算法

下面是归并排序的 Ruby 代码实现:

def merge_sort(arr)
  return arr if arr.size <= 1
  mid = arr.size / 2
  left_half = arr[0..mid-1]
  right_half = arr[mid..arr.size]
  merge(merge_sort(left_half),
        merge_sort(right_half))
  end
def merge(left_half, right_half)
  sorted_arr = []
  until left_half.empty? || right_half.empty?
    if left_half.first <= right_half.first
      sorted_arr << left_half.shift
    else
      sorted_arr << right_half.shift
    end
  end
  sorted_arr.concat(left_half).concat(right_half)
end
array=[23,12,1,2,4,5,11,10,5,9,3]
cx=merge_sort(array)
puts(cx)

这个函数接受一个数组作为参数,并使用归并排序的算法将数组进行排序。在归并排序的过程中,数组被递归地划分为较小的子数组,直到每个子数组只有一个元素。然后,这些子数组被逐对合并,直到整个数组被排序。这里使用了一个辅助函数 merge,用于合并两个已排序的子数组。

1
2
3
4
5
5
9
10
11
12
23

开发工具:RubyMine 2022.2.1
CSDN ChitGPT
微信截屏工具Alt+A

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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`方法随机选择),并将数组分为小于、等于和大于基准元素的三个部分。然后将这三个部分分别递归地进行快速排序,最后将排序好的结果按照小于、等于、大于的顺序连接起来返回。 更详细的解释可以参考注释。以上是对快速排序算法的一个简单实现,可以应用于对数组进行排序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值