折半插入排序java实现
package Sort;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Random;
public class BinaryInsertSort {
private static void binaryInsertSort(int[] data){
int size = data.length;
int temp,i,j,low,mid,high;
for(i=1;i<size;i++){
temp = data[i];
low = 0;
high = i-1;
while(low<=high){
mid = (low+high)/2;
if(temp>data[mid]){
low = mid+1;
} else {
high = mid-1;
}
}
for(j=i;j>low;j--){
data[j] = data[j-1];
}
data[low] = temp;
}
}
private static void generateRandomInt(int[] data){
int size = data.length;
Random rd = new Random();
for(int i=0;i<size;i++){
data[i] = Math.abs(rd.nextInt())%100;
}
}
private static void print(int[] data){
for(int i=0;i<data.length;i++){
System.out.print(data[i]+" ");
}
System.out.println();
}
public static void main(String[] args){
int size = 20;
System.out.println("输入数组的大小:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
size = Integer.parseInt(br.readLine());
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
int[] data = new int[size];
generateRandomInt(data);
print(data);
binaryInsertSort(data);
print(data);
}
}