我想制作自己的二进制搜索算法来搜索 1 000 000 个元素的 ArrayList。我决定使用 do-while 循环进行搜索。我知道我可以使用 while() 循环。但是当我运行它时,需要很长时间才能找到数字。我猜想设置 ArrayList 的第一个和最后一个元素的值有问题。我的代码是
import java.util.*;
public class BinSearchAlg {
public static void main(String[]args){
int first;
int last;
int median;//middle element of arraylist
Long element;//element with median index
Scanner scan = new Scanner(System.in);
ArrayList<Long>list = new ArrayList();
for(long l=0;l<1000000;l++){
list.add(l);//list is sorted
}
first = 0;
last = list.size();
median = (last-first)/2;
element = list.get(median);
System.out.println("Choose the number: ");
long l = scan.nextLong();
do{
if(element<l){
first = median;
median=(last-first)/2;
element = list.get(median);
}else{ //if(element>l){
last = median;
median = (last-first)/2;
element = list.get(median);
}
}while(element!=l);
}
}
谢谢你的帮助。