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
。您认为我们应该相信该程序不会导致出现问题吗?