question: public static int [ ] mergeSort ( int [ ] a ) { if ( a . length == 1 ) return a ; int [ ] x = mergeSort ( Arrays . copyOfRange ( a , 0 , a . length / 2 ) ) ; int [ ] y = mergeSort ( Arrays . copyOfRange ( a , a . length / 2 , a . length ) ) ; return merge ( x , y ) ; }
target:  Merge sort. <p/> Time complexity:     O(n log n) Space complexity:    O(n) (also needs O(log n) stack space as it is recursive)