Sha256: 37c27b19059abacbb99d78ad746d8f53496288ab6dbfb103e19774ca94eaa1f9
Contents?: true
Size: 532 Bytes
Versions: 7
Compression:
Stored size: 532 Bytes
Contents
# Sorts an array in ascending natural order using merge sort. merge_sort: (list) -> return list if list.length is 1 result: [] pivot: Math.floor(list.length / 2) left: merge_sort(list.slice(0, pivot)) right: merge_sort(list.slice(pivot)) while left.length and right.length result.push(if left[0] < right[0] then left.shift() else right.shift()) result.concat(left).concat(right) # Test the function. puts(merge_sort([3, 2, 1]).join(' ') is '1 2 3') puts(merge_sort([9, 2, 7, 0, 1]).join(' ') is '0 1 2 7 9')
Version data entries
7 entries across 7 versions & 1 rubygems