Skip to content

Instantly share code, notes, and snippets.

@peel
Last active August 29, 2015 14:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save peel/c067ff25dff2f0bf9c01 to your computer and use it in GitHub Desktop.
Save peel/c067ff25dff2f0bf9c01 to your computer and use it in GitHub Desktop.
sorting in scala
def mergesort(toSort: List[Int]) : List[Int] = {
if(toSort.length<=1) toSort
else{
val (left, right) = split(toSort)
merge(mergesort(left), mergesort(right))
}
def split(toSplit: List[Int]): (List[Int], List[Int]) = toSplit splitAt toSplit.length/2
def merge(left: List[Int], right: List[Int]):List[Int] = {
(left, right) match {
case(Nil, right) => right
case(left, Nil) => left
case(leftHead::leftTail, rightHead::rightTail) =>
if(leftHead<rightHead)leftHead::merge(leftTail, right)
else rightHead :: merge(left, rightTail)
}
}
}
mergesort(List[Int](5,4,3,2,1))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment