您的位置:首页 > 其它

增强版插入排序--二分的结合

2017-09-27 20:06 423 查看
public class BinaryInsertSort {

public static void main(String[] args) {

int[] arr = {5,2,4,6,1,3};

arr = BinaryInsertSortFun(arr);

System.out.println(Arrays.toString(arr));

}

public static int[] BinaryInsertSortFun(int[] arr){
for(int j=1;j<arr.length;j++){
int i = j-1;
int key = arr[j];
//二分查找,找到插入位置
int low = 0;
int high = i;
while(low<=high){
int mid = (low+high)/2;
if(arr[mid]<key){
low = mid+1;
}else{
high = mid-1;
}
}
//将插入位置之后的元素向后移动一个位置
for(int k=j-1;k>=low;k--){
arr[k+1]=arr[k];
}
//插入
arr[low] = key;
}
return arr;
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: