
def sort[T <% Ordered[T]] ( arr:Array[T] ) ( f: ( T,T ) =>Boolean ) =
{
for ( ( index, item ) <- ( 0 until arr.length ) zip arr )
{
if ( index!=0 && f ( item,arr ( index-1 ) ) )
{
var insertIndex=index-1
while ( insertIndex>=0 )
{
if ( f ( item,arr ( insertIndex ) ) )
{
arr ( insertIndex+1 ) =arr ( insertIndex )
arr ( insertIndex ) =item
}
insertIndex-=1
}
}
}
}


