折半插入排序(java)
package com.athome.sorting;
import java.util.*;
public class Sort {
public static void main(String[] args){
int[] arr = {13,9,8,25,98,63,5,0};
System.out.println("before: "+Arrays.toString(arr));
for(int i = 1;i < arr.length;i++){
int tmp = arr[i];
int low = 0,high = i - 1;
while(low <= high){ //确定high的位置
int mid = (low + high)/2;
if(arr[i] < arr[mid])
low = mid + 1;
else
high = mid - 1;
}
int j;
for( j = i - 1;j > high ;j--){ //移动元素
arr[j + 1] =arr[j];
}
arr[j+1] = tmp;
}
System.out.println("after: "+Arrays.toString(arr));
}
}
运行结果