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

Version Path
haml-more-0.5.1 vendor/coffee-script/examples/computer_science/merge_sort.coffee
haml-more-0.5.0 vendor/coffee-script/examples/computer_science/merge_sort.coffee
haml-more-0.4.0 vendor/coffee-script/examples/computer_science/merge_sort.coffee
haml-more-0.4.0.d vendor/coffee-script/examples/computer_science/merge_sort.coffee
haml-more-0.4.0.c vendor/coffee-script/examples/computer_science/merge_sort.coffee
haml-more-0.4.0.b vendor/coffee-script/examples/computer_science/merge_sort.coffee
haml-more-0.4.0.a vendor/coffee-script/examples/computer_science/merge_sort.coffee