数组al[0,mid-1] 和 al[mid,num-1],都分别有序。将其merge成有序数组al[0,num-1],要求空间复杂度O(1)
因为空间复杂度要求是O(1),所以不用用merge算法。
考虑到左半部分有的数比右半部分的数大,右半部分也会有比左半部分大的数。
思路往交换方面想,遍历左半部分,与a[mid]比较,如果比a[mid]大,则交换,并且将交换后的a[mid]放到右半部分正确的位置(插入排序)。
伪代码:
for(i=0;i<=mid-1;i++){
if(a[i]>a[mid]){
SWAP a[i], a[mid] ;
INSERT a[mid] in the right place;
}
}