主頁 > 知識庫 > Ruby實(shí)現(xiàn)的合并排序算法

Ruby實(shí)現(xiàn)的合并排序算法

熱門標(biāo)簽:語音系統(tǒng) 電話運(yùn)營中心 Win7旗艦版 呼叫中心市場需求 百度AI接口 客戶服務(wù) 企業(yè)做大做強(qiáng) 硅谷的囚徒呼叫中心

算法課的作業(yè),利用分治法,合并排序。

#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, 21, 29, 32, 37, 40, 49, 58, 70, 70, 75, 82, 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, left, right)
 if left  right then
  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 "The sorted array is: " + arrayInt.to_s

您可能感興趣的文章:
  • Ruby實(shí)現(xiàn)的各種排序算法
  • ruby實(shí)現(xiàn)的插入排序和冒泡排序算法
  • Ruby實(shí)現(xiàn)的矩陣連乘算法
  • Ruby實(shí)現(xiàn)二分搜索(二分查找)算法的簡單示例
  • Ruby實(shí)現(xiàn)的3種快速排序算法
  • Ruby實(shí)現(xiàn)的最優(yōu)二叉查找樹算法
  • Ruby實(shí)現(xiàn)的圖片濾鏡算法代碼

標(biāo)簽:喀什 山西 海南 山西 長沙 濟(jì)南 安康 崇左

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Ruby實(shí)現(xiàn)的合并排序算法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266