public class BinaryInsertSort {
public static void main(String[] args) {
int [] data = {32,22,11,44,55,234,43,12,1,9,65};
binaryInsertSort(data);
for(int loop: data){
System.out.println(loop);
}
}
public static void binaryInsertSort(int[] data){
if(data.length < 2) return;
for(int i = 1; i< data.length; i++){
int insertNum = data[i];
int low = 0;
int high = i - 1;
while(low <= high){
int mid = (low + high)/2;
if(data[mid] > insertNum){//没有考虑类似二分查找中的相等的情况
low = mid + 1;//即若有相等的,插入在最前面
}else{
high = mid - 1;
}
}
for(int j = i ; j > low; j--){
data[j] = data[j - 1];
}
data[low] = insertNum;
}
}
}
折半二分插入排序Java代码
最新推荐文章于 2021-11-17 17:55:39 发布