Ruby实现的合并排序算法
算法课的作业,利用分治法,合并排序。
#encoding:utf-8 #author:xujin,4100213 #date:Oct27,2012 #MergeSort #tosortanarraybyusingMergeSortalgorithm #exampleoutput: #Theoriginalarrayis:[4,32,84,58,49,40,75,29,82,21,70,37,70] #Thesortedarrayis:[4,21,29,32,37,40,49,58,70,70,75,82,84] MAX=100 arrayInt=Array.new forindexin(0..12) arrayInt[index]=rand(100)#produce12randomnumber end puts"Theoriginalarrayis:"+arrayInt.to_s defmerge(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 forkin(left..right) arrL.first<=arrR.first?(arr[k]=arrL.shift):(arr[k]=arrR.shift) end end defmerge_sort(arr,left,right) ifleft<rightthen middle=(left+right)/2 merge_sort(arr,left,middle) merge_sort(arr,middle+1,right) merge(arr,left,middle,right) end end merge_sort(arrayInt,0,arrayInt.length-1) puts"Thesortedarrayis:"+arrayInt.to_s