Varreverse_pairs = 0//反向數
defmsort[T](cmp:(T,T)= & gt;Boolean)(l:List[T]):List[T] = {
defmerge(l1:List[T],l2:List[T]):List[T]=(l1,l2)match{
case(Nil,_) = >l2
case(_,Nil)= & gt;l1
case(x::left1,y::left 2)= & gt;
if(cmp(x,y))
x::merge(left1,l2)
否則{
reverse_pairs += l1.length
y::merge(l1,left2)
}
}
valn =長度/ 2
如果(n == 0)
返回l
否則{
val(l1,l2) = l.splitAt(n)
merge(msort(cmp)(l1),msort(cmp)(l2))
}
}
println(msort((x:Int,y:Int)= & gt;x & lty)(List(5,4,3,2,7,6)))
println(反向對)
}