some improve merge sort