二分法插入排序与直接插入排序很相似,只不过,在查找插入位置的时候,用的是二分查找方法,具体的Java代码实现如下所示:
public class BinaryInsertSort {
private void binaryInsertSort(int[] array){
for (int i=0;i<array.length;i++){
int temp=array[i];
int left=0;
int right=i-1;
int mid=0;
while(left<=right){
mid=(left+right)/2;
if (temp<array[mid]){
right=mid-1;
}else{
left=mid+1;
}
}
for (int j=i-1;j>=left;j--){
array[j+1]=array[j];
}
if (left!=i){
array[left]=temp;
}
}
for (int arr:array) {
System.out.println(arr);
}
}
public static void main(String[] args){
BinaryInsertSort binaryInsertSort=new BinaryInsertSort();
int[] array=new int[]{10,8,11,3,4,6,7,11,2,90,18,33,28,-1,0,7};
binaryInsertSort.binaryInsertSort(array);
}
}