package pra;
import java.util.Scanner;
public class TwoPointsSearch {
private long[] array;
private int subscripts;//下标
public TwoPointsSearch(){
array = new long[50];
}
public TwoPointsSearch(int scanner){
array = new long[scanner];
}
//添加数据
public void insert(long values){
int i;
for(i=0;i<subscripts;i++){ //判断当前插入新值与之前插入值大小,获取插入位置下标
if(array[i]>values){
break;
}
}
for(int j=subscripts;j>i;j--){ //大值整体后移
array[j]=array[j-1];
}
array[i]=values;
subscripts++;
}
public int twopointsSearch(int values){ //二分法查找数组元素,并返回下标;
int middle=0,first=0; //定义中间和数组首部
int end=subscripts; //定义数组末尾
while(true){
middle = (first + end)/2;
if(array[middle] == values){
break;
}else if(first > end){
return -1;
}else{
if(array[middle] < values){
first = middle+1;
}
else{
end = middle-1;
}
}
}
return middle;
}
public void output(){ //输出
System.out.print("[");
for(int i = 0; i < subscripts; i++) {
System.out.print(array[i] + " ");
}
System.out.println("]");
}
public static void main(String[] args) {
int scanner; //接收数组大小值
int middle; //接收返回值判断有无该元素
System.out.println("请输入一个正整数(数组大小)");
Scanner sc = new Scanner(System.in);
TwoPointsSearch tps = new TwoPointsSearch(scanner = sc.nextInt());
for(int i=0;i<scanner;i++){
Scanner sc1 = new Scanner(System.in);
tps.insert(sc1.nextInt());
}
tps.output();
System.out.println("请输入要查询的数组元素值");
Scanner sc2 = new Scanner(System.in);
middle = tps.twopointsSearch(sc2.nextInt()); //调用二分法查找
if(middle == -1){
System.out.println("无该数组元素");
}else{
System.out.println("查询数组元素下表为:"+middle);
}
return;
}
}