【发布时间】:2015-02-26 08:07:36
【问题描述】:
我正在做一个项目,它从 .txt 文件中读取书名并将它们放入 arraylist,然后将 arraylist 转换为数组,用户输入一个数字,即书籍参考号,然后它进行线性搜索和二分搜索以找到那本书。我只是对二进制搜索的代码有问题,因为我几乎不知道该怎么做,这就是我所拥有的:
private void FindItActionPerformed(java.awt.event.ActionEvent evt) {
String input;
input = Input.getText();
for(int i=0; i<bookList.length; i++){
if (bookList[i].referenceNumber.equals(input)){
Output1.setText("The Book is " + bookList[i].title);
}
}
上面是线性搜索的代码,效果很好。下面是我认为我需要进行二分搜索的内容,但同样,我不确定也无法弄清楚。
int right = 0, left = bookList.length;
while(right<= left){
int middle = (right + left)/2;
if( bookList[middle].referenceNumber.equals(input)){
Output2.setText("The book is " + bookList[middle].title);
}
}
}
这是类和数组
public class Book{
String referenceNumber, title;
public Book(String _referenceNumber, String _title){
referenceNumber = _referenceNumber;
title = _title;
}
}
ArrayList <Book> Books = new ArrayList <Book> ();
Book [] bookList;
感谢您提供的任何帮助,这对我来说有点棘手。
【问题讨论】:
-
我们需要排序数组来进行二分搜索吗? ...
标签: java binary-search