算法课的作业,利用分治法,合并排序。
#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 举报,一经查实,本站将立刻删除。