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

来源:互联网 发布:最精准的足彩数据分析 编辑:程序博客网 时间:2024/06/06 12:48

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;}

}

原创粉丝点击