java - 将数据值添加到搜索算法中?

标签 java search recursion addition binary-search

如何将 1000、10000、1000000 或 10000000 个单独的数据项添加到搜索算法中?

代码:

public class BinarySearch {

int binarySearch(int[] array, int value, int left, int right) {
      if (left > right)
            return -1;
      int middle = (left + right) / 2;
      if (array[middle] == value)
            return middle;
      else if (array[middle] > value)
            return binarySearch(array, value, left, middle - 1);
      else
            return binarySearch(array, value, middle + 1, right);           
}

}

最佳答案

所以,如果我理解正确的话,您想在数组中使用不同数量的整数来尝试您的算法。

public int[] makeArray(int size, int minNum, int maxNum) {
    int [] arr = new int[size];
    Random r = new Random();       

    for (int i = 0; i < size; i++) {
        arr[i] = minNum + r.nextInt(maxNum);
    }

    Arrays.sort(arr);

    return arr;
}

因此,如果您想要 10000 个 100 到 500 之间的号码,那么您可以调用:

int[] arr = makeArray(10000, 100, 500);

实际上,我建议创建一个辅助方法来开始搜索,如下所示:

public int binarySearch(int[] array, int value) {
    return binarySearch(array, value, 0, array.length - 1);
}

然后您可以在 arr 中查找值(例如 5):

int i = binarySearch(arr, 5);

关于java - 将数据值添加到搜索算法中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15954815/

相关文章:

java - 不要在子类的构造函数中创建父类(super class)实例,但完全合法

java - Pom.xml:连接超时和模型版本丢失错误

php - php Peg Puzzle 解算器超时

javascript - 使用递归转换对象数据

java - 如何使用 javafx 11 修复 jfoenix 模块

java - 在 Linux 上运行程序时出现错误。在 Windows 上它工作正常

java - 简单的二分查找程序...请告诉我这段特定代码有什么问题

search - 二分查找查找大于或等于给定键的元素

search - 在组织模式下使用 LOGBOOK 中的时间戳进行自定义搜索

具有 "russian dolls"组件的 Angular 循环依赖