Ruby实现的合并排序算法
2015-05-22 11:32
1636 查看
算法课的作业,利用分治法,合并排序。
#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
您可能感兴趣的文章:
相关文章推荐
- 算法设计与分析 合并排序的递归实现算法
- 算法分析之合并排序——merge sort子函数实现
- scala数据结构和算法-01-用scala实现合并排序
- 【LeetCode-面试算法经典-Java实现】【088-Merge Sorted Array(合并排序数组)】
- 基本算法简单实现-二分法查找、合并排序、冒泡排序、插入排序、选择排序、快速排序
- 算法实现(7)合并排序
- 【算法设计】合并排序、自然合并排序与快速排序算法的Java实现
- 算法 合并排序 C++实现
- 算法中分治策略实现合并排序
- 合并排序的递归实现算法
- 插入排序,合并排序,堆排序,快速排序,计数排序的实现(算法导论)
- mahout demo——本质上是基于Hadoop的分步式算法实现,比如多节点的数据合并,数据排序,网路通信的效率,节点宕机重算,数据分步式存储
- 合并(归并)排序 算法原理与实现
- 各种算法的C#实现系列1 - 合并排序的原理及代码分析
- 白话经典算法系列之二 直接插入排序的三种实现
- [算法入门]快速排序非递归方法(Java实现),大家一起来找茬啊~
- 常用算法Java实现之直接插入排序
- 白话经典算法系列之五 归并排序的实现
- Java实现-合并排序数组
- C#插入排序算法实现