gpt4 book ai didi

java - 未排序数组中的二进制搜索

转载 作者:行者123 更新时间:2023-11-30 10:02:38 24 4
gpt4 key购买 nike

我遇到了这个问题:给定未排序的数组,使用二分查找查找可以找到多少个元素- ex : [5,4,6,2,8] -> Ans : 3 -> '6' and '8' and '5' can be found using binary search

我什至不明白对未排序的数组进行二分查找是什么意思。有人可以解释一下这个问题吗?

还有一个代码可以解决这个问题:

private static int countPossibleMatches(int[] array, int left, int right, int min, int max) {
if (right < left) {
return 0;
} else if (right == left) {
return (array[left] >= min && array[left] <= max? 1 : 0);
} else {
int middle = (left + right) / 2;
int count = (array[middle] >= min && array[middle] <= max ? 1 : 0);
count += countPossibleMatches(array, left, middle - 1, min, Math.min(array[middle], max));
count += countPossibleMatches(array, middle + 1, right, Math.max(array[middle], min), max);
return count;
}
}

static int countPossibleMatches(int[] array) {
return countPossibleMatches(array, 0, array.length - 1, Integer.MIN_VALUE, Integer.MAX_VALUE);
}

最佳答案

二分查找不适用于未排序的数组。也就是说,如果您忽略数组未排序的事实并对其运行二进制搜索算法,对于某些输入,它可能会成功找到您要查找的元素的索引。

例如,二分查找算法的第一步要求您检查元素是否位于数组的中间索引处。因此,如果您正在搜索恰好位于该位置的元素,则无论数组是否已排序,您的二分查找都会找到它。

因此

find how many elements can be found using binary search

要求您回答给定数组,可以通过二分查找算法找到其中的元素数量。

关于java - 未排序数组中的二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56735875/

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