问题与实现二进制搜索算法

v_anon:

我是新来编程。我有六个月认为,我已经开始学习编程,我想测试我自己的一些算法。我想实现二进制搜索算法。从理论上讲我已经掌握的概念,但在执行我有一些麻烦。

下面是算法的实现:

    public static boolean binarySearchNumber(int[] numbers, int number) {
        Arrays.sort(numbers);
        System.out.println(Arrays.toString(numbers));
        int lowIndex = 0;
        int highIndex = numbers.length;
        while(lowIndex!=highIndex) {
            int midIndex = (lowIndex+highIndex)/2;
            if(numbers[midIndex]==number) {
                return true;
            } else if(numbers[midIndex]>number) {
                lowIndex = midIndex+1;
            } else if(numbers[midIndex]<number) {
                highIndex = midIndex-1;
            }
        }
        return false;
    }

单元测试

    @Test
    public void testBinarySearchNumber() {
        // setup
        int[] numbers = new int[] { 1, 3, 55, 8, 22, 9, 11, 0 };
        // execute
        boolean found = ArrayUtil.binarySearchNumber(numbers, 8);
        System.out.println(found);

    }

先感谢您。

雷纳托:

超越了其他的答案中报告的错误,我发现了另一个问题:

public static boolean binarySearchNumber(int[] numbers, int number) {
        Arrays.sort(numbers);
        System.out.println(Arrays.toString(numbers));
        int lowIndex = 0;
        int highIndex = numbers.length;
        while (lowIndex != highIndex) {
            int midIndex = (lowIndex + highIndex) / 2;
            if (numbers[midIndex] == number) {
                return true;
            } else if (numbers[midIndex] < number) {
                lowIndex = midIndex + 1;
            } else if (numbers[midIndex] > number) {
                highIndex = midIndex ; // here
            }
        }
        return false;
    }

midIndex 在阵列中,你不需要减1,否则你将永远有一个元素少。

编辑

以达到预期的效果另一种方式是改变,如果条件由@伊兰的答案的建议。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

二进制搜索算法的实现

二进制搜索算法的问题

二进制搜索算法

输出二进制搜索算法的搜索次数时出现问题

随机二进制搜索算法

二进制搜索算法不正确

二进制搜索算法不起作用

双二进制搜索算法

二进制搜索算法-Python

二进制搜索算法查找leetcode加热器问题

为什么二进制搜索算法可解决此一维“峰发现”问题?

这种递归二进制搜索算法会更有效吗?

Python中二进制搜索算法的异常行为

Java中的Sherwood二进制搜索算法是什么?

如何使用hoare逻辑证明该二进制搜索算法是正确的?

修改后的二进制搜索算法超过时间限制

这是否意味着二进制搜索算法?

二进制搜索算法随机生成的数组项不起作用

我的二进制搜索算法模板函数总是返回False

为什么二进制搜索算法不起作用?

二进制搜索答案算法

二进制搜索树?算法

在我的二进制搜索算法中,Python在列表中找不到0个索引成员

满足条件后递归二进制搜索算法不会停止执行,返回无类型对象

二进制搜索树的问题

二进制搜索树-实现“搜索”功能

为 Python 编写了二进制搜索算法,包括递归和迭代版本。你如何判断他们的效率?

我正在尝试在终端中运行二进制搜索算法(Python),但没有任何内容打印到终端

为什么返回“ -1”;是不是在可汗学院的“二进制搜索算法挑战赛”中成为条件语句的一部分?