二分法查找(折半查找)
基本思想:在插入第i个元素时,对前面0~i-1元素进行折半,先跟他们中间的那个元素比较,
如果小了,则对前半再进行折半,否则对后半部分进行折半处理,直到left>right,然后
再把第i个元素与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。
eg:34 3 12 20 11 6 19
19 3 12 20 11 6 34
19 3 12 6 20 11 34
19 3 12 6 11 20 34
11 3 12 6 19 20 34
11 3 6 12 19 20 34
6 3 11 12 19 20 34
3 6 11 12 19 20 34
import java.util.Arrays;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System .in);
System.out.println("请输入要排序的数:");
int[] arr=new int [7];
for(int i=0;i<7;i++) {
arr[i]=scanner .nextInt();
}
for(int i=0;i<arr.length;i++) {
int start=0;
int end=i-1;
int temp=arr[i];
while (start<=end) {
int middle=(start+end)/2;
if(arr[middle]>temp) {
end=middle-1;
}else {
start=middle+1;
}
}
for(int j=i-1;j>end;j--) {
arr[j+1]=arr[j];
}
arr[end+1]=temp;
}
System.out.println(Arrays.toString(arr));
}
}