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

Java 未排序数组中的二进制搜索,java,Java,我遇到了这个问题: 给定未排序的数组,使用二进制搜索查找可以找到的元素数 -例如:[5,4,6,2,8]->Ans:3->“6”和“8”以及“5”可以使用二进制搜索找到 我甚至不明白在未排序的数组上进行二进制搜索意味着什么。 有人能解释一下这个问题吗 还有一个代码可以解决这个问题: private static int countPossibleMatches(int[] array, int left, int right, int min, int max) { if (ri

我遇到了这个问题: 给定未排序的数组,使用二进制搜索查找可以找到的元素数 -例如:[5,4,6,2,8]->Ans:3->“6”和“8”以及“5”可以使用二进制搜索找到

我甚至不明白在未排序的数组上进行二进制搜索意味着什么。 有人能解释一下这个问题吗

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

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);
    }
private static int count可能匹配(int[]数组,int left,int right,int min,int max){
if(右<左){
返回0;
}else if(right==left){

return(array[left]>=min&&array[left]=min&&array[middle]二进制搜索对未排序的数组不起作用。也就是说,如果忽略数组未排序的事实,并对其运行二进制搜索算法,对于某些输入,它可能会成功找到正在查找的元素的索引

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

所以

使用二进制搜索查找可以找到多少元素


要求您回答给定数组的问题,通过二进制搜索算法可以找到它的多少个元素。

请确保。在数组上运行二进制搜索:5、4、6、2、8和target=5、6或8将返回true?@adamson好的,不是“true”,二进制搜索返回您要查找的元素的索引(不是布尔值).但是,是的,对于输入5、6和8,对该数组进行二进制搜索将返回您要查找的数字的正确索引。