update mergeSort to ensure O(n) space cost
add BinarySearch