object MergeSort |
{ |
def main ( args : Array[String] ) = |
{ |
var list = List ( 3 , 5 , 6 , 1 , 1 , 4 , 7 ); |
sort ( list, ( x : int,y : int ) = > ( x < y ) ).foreach ( println ( _ ) );/** |
* MergeSort algorithm |
* @ Param def sort[T](args : List[T] , lessFunc : (T,T) = >Boolean) : List[T] = { |
def merge( list 1 : List[T],list 2 : List[T]) : List[T] = { |
if (list 1 .length < = 0 ) list 2 ; |
else if (list 2 .length < = 0 ) list 1 ; |
else if ( lessFunc(list 1 .head, list 2 .head) ) list 1 .head :: merge(list 1 .tail,list 2 ); |
else list 2 .head :: merge(list 1 ,list 2 .tail); val medpos = args.length / 2 ;merge( args.take(medpos) , args.drop(medpos) ); |
} |