Java中的二进制搜索程序
以下是我使用二进制搜索的程序代码:Java中的二进制搜索程序,java,binary-search,Java,Binary Search,以下是我使用二进制搜索的程序代码: import java.util.Random; public class QSrt { int[] arr = new int[20]; public void addElement() { for (int i = 0; i < arr.length; i++) { Random rd = new Random(); arr[i] = rd.nextInt(10); } } public vo
import java.util.Random;
public class QSrt {
int[] arr = new int[20];
public void addElement() {
for (int i = 0; i < arr.length; i++) {
Random rd = new Random();
arr[i] = rd.nextInt(10);
}
}
public void sort(){
for (int i = 0; i < arr.length - 1; i++) {
for (int j = arr.length - 1; j > i; j--) {
if(arr[j] < arr[j-1]){
int t = arr[j];
arr[j] = arr[j-1];
arr[j-1] = t;
}
}
}
}
public int binarySearch(int val){
int first = 0;
int last = arr.length - 1;
int index = -1;
while (first <= last) {
int middle = (first + last)/2;
if(arr[middle] == val){
index = middle;
}else if(arr[middle] < val){
first = middle + 1;
}else{
last = middle - 1;
}
}
return index;
}
public static void main(String[] args) {
QSrt arr = new QSrt();
arr.addElement();
arr.sort();
for(int i = 0; i < arr.arr.length;i++){
System.out.print(arr.arr[i] + " ");
}
System.out.println("");
System.out.println(arr.binarySearch(0));
}
import java.util.Random;
公共类QSrt{
int[]arr=新int[20];
公共无效补遗(){
对于(int i=0;ii;j--){
if(arr[j] 而(首先一旦获得所需的值,您需要中断循环
if(arr[middle] == val){
index = middle;
return index; //OR just => return middle;
}
你需要在arr[middle]==val的情况下break
。如果你不这样做,那么first
和last
永远不会改变,这意味着你的循环条件永远不会为false,你永远不会退出循环binarySearch()
方法的返回类型为ArrayList
,但返回的是int
。您认为我们应该相信该程序不会导致出现问题吗?