微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ruby实现的合并排序算法

算法课的作业,利用分治法,合并排序。

#encoding: utf-8
#author: xu jin,4100213
#date: Oct 27,2012
#MergeSort
#to sort an array by using MergeSort algorithm
#example output:
#The original array is:[4,32,84,58,49,40,75,29,82,21,70,37,70]
#The sorted array is: [4,84]

MAX = 100
arrayInt = Array.new
for index in (0..12)
 arrayInt[index] = rand(100) #produce 12 random number
end
puts "The original array is:" + arrayInt.to_s

def merge(arr,left,middle,right)
 arrL,arrR = Array.new,Array.new
 arrL[0..(middle - left)],arrR[0..(right - middle - 1)] = arr[left..middle],arr[middle + 1.. right]
 arrL[arrL.size],arrR[arrR.size]= MAX,MAX
 for k in (left..right)
  arrL.first <= arrR.first ? (arr[k] = arrL.shift) : (arr[k] = arrR.shift)
 end
end

def merge_sort(arr,right)
 if left < right then
  middle = (left + right)/2
  merge_sort(arr,middle)
  merge_sort(arr,middle + 1,right)
  merge(arr,right)
 end
end

merge_sort(arrayInt,arrayInt.length-1)
puts "The sorted array is: " + arrayInt.to_s

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐