加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby实现的合并排序算法

发布时间:2020-12-16 22:52:46 所属栏目:百科 来源:网络整理
导读:算法课的作业,利用分治法,合并排序。 #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 sorte

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

#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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读