I am asking first question because:
As we know, we pass first and last index in quicksort which thereafter chooses a pivot, and then does partitioning. What if in mergesort also in Mergesort() method, we pass the first and last index and choose a mid which is actually an index of the original array(so instead of MergeSort(LeftOrRightArray), we pass as params MergeSort(OriginalArray, start, end) where either of start or end (representing indices of the original array) being mid+1 or mid respectively of immediate outer recursion, and the other one of start or end is , you know, the other end, but an index of the original array, and so on. Also we choose the mid which is an index of the original Array. And finally we use Merge() method to do in-place transpositions.
I am asking second question because:
A quicksort chooses a pivot, and puts it at its rightful place, irrespective of the order of the elements at its left or right. But the thing to observe here is that in doing so, the stability factor is 'kept' till now.(Or Am I wrong?) Now it does recursion on the smaller left and right sub-arrays. Suppose if we choose the pivot on a thumb rule as the right-most value(in each sub-array), the process of putting the pivot at its rightful place can have a way of doing so without losing the stability. And so on. Means it needs a little visualization of five consecutive (let's say) 7's (in the original array) and they being chosen as pivots in sub-arrays(first 7 as pivot, last 7 as pivot, or any mid 7 as pivot,)