gpt4 book ai didi

java - 使用二分查找在数组中查找值 (Java)

转载 作者:行者123 更新时间:2023-11-30 03:30:28 25 4
gpt4 key购买 nike

我需要使用二分查找来定位数组中的 45.3。这是我到目前为止所拥有的。

public class Bsearch {
public static final int NOT_FOUND = -1;

public static int binarySearch(int[] a, int x) {
int low = 0;
int high = a.length - 1;
int mid;
while (low <= high) {
mid = (low + high) / 2;
if (a[mid].compareTo(x) < 0)
low = mid + 1;
else if (a[mid].compareTo(x) > 0)
high = mid - 1;
else
return mid;
}
return NOT_FOUND;
}

public static void main(String[] args) {
int SIZE = 6;
int[] a = new Integer[SIZE] = { 10, -3, 5, 24, 45.3, 10.5 };
System.out.println("45.3 Found" + binarySearch(a, 45.3));
}
}

我所有的错误似乎都源于这个领域-

    int [] a = new Integer [ SIZE ]={ 10,-3,5,24,45.3,10.5 };
System.out.println("45.3 Found" +binarySearch(a, 45.3));

这一切对我来说都是新的,对于任何明显的错误,我深表歉意。

最佳答案

对于二分搜索数据数组应该排序,并按正确的顺序排序,但是传递给binarySearch(int[] a, int x)的数组没有排序,所以首先对数组进行排序,然后应用二分搜索它。另请检查您的二分搜索逻辑,您正在将中间元素与 0 进行比较,它应该与要搜索的元素(key)进行比较

while(high >= low) {
int middle = (low + high) / 2;
if(data[middle] == key) {
return true;
}
if(data[middle] < key) {
low = middle + 1;
}
if(data[middle] > key) {
high = middle - 1;
}
}

关于java - 使用二分查找在数组中查找值 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29159274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com