Tuesday, January 10, 2012

My Merge Sort in Groovy

I'm Learning Groovy :) and This is my groovy implementation of Merge Sort.
def mergeSort(list) {
def size = list.size()
if (size < 2) {
return list
} else {
def m = (int)(size / 2)
def left = list[0..<m]
def right = list[m..<size]
return merge(mergeSort(left), mergeSort(right))
}
}
def merge(left, right) {
def result = []
def l = 0
def r = 0
def lsize = left.size()
def rsize = right.size()
while (l < lsize && r < rsize){
result.add((left[l] <= right[r]) ? left[l++] : right[r++])
}
if (l < lsize) {
result += left[l..-1]
}
if (r < rsize) {
result += right[r..-1]
}
return result
}
assert [1,2,3,4,5] == mergeSort([1,5,3,2,4])

1 comment: