public class Solution {
public void merge(int A[], int m, int B[], int n) {
// 二分查找然后插入
for(int i=0;i<n;i++){
int val = B[i];
// 查找val在A中应该存放的位置
int low = 0;
int high = m+i-1;
while(low<=high){
int mid = (low+high)/2;
if(A[mid]>val){
high = mid-1;
} else {
low = mid + 1;
}
}
//此时low>high
for(int j=m+i-1;j>high;j--){
A[j+1] = A[j];
}
A[high+1] = val;
}
}
} 


京公网安备 11010502036488号