有一个数组包含2n个元素,例如:[a1,a2,…,an,b1,b2,…,bn],将该数组进行排序,排序结果如:[a1,b1,a2,b2,…,an.bn]。
public void overlapsort(int[] n,int left,int right){
//如果仅有2个元素,直接返回
if(right - left == 1){
return;
}
int mid = left + (right - left) / 2;
int tmp = mid + 1;
int tpmid = left + (mid - left) / 2;
int tmpa = 0;
//循环处理,将中间的数字进行交换位置
for(int i=tpmid + 1; i<mid + 1; i++){
tmpa = n[i];
n[i] = n[tmp];
n[tmp] = tmpa;
tmp++;
}
//继续对左、右两边的数组进行排序
overlapsort(n,left,mid);
overlapsort(n,mid + 1,right);
}