二分插入排序
二分法插入排序是在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left<right,然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。
//二分插入排序
public void sortIntegers(int[] A) {
// Write your code here
int i,j,x;
int n=A.length;
for(i=1;i<n;i++){
x=A[i];
int left=0;
int right=i-1;
while(left<=right){
int mid=(left+right)/2;
if(x<A[mid]){
right=mid-1;
}else{
left=mid+1;
}
}
for(j=i-1;j>=left;j--){
A[j+1]=A[j];
}
A[left]=x;
}
}