【问题标题】:Adding Data Values to a Search Algorithm?将数据值添加到搜索算法?
【发布时间】:2013-04-11 17:09:58
【问题描述】:

如何将 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);           
}

}

【问题讨论】:

  • 你的意思是用相同的算法搜索不同的数组?
  • 您所说的问题不清楚。您的意思是,如何将更多项目添加到正在搜索的数据集中?

标签: java search recursion add binary-search


【解决方案1】:

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

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);

【讨论】:

    【解决方案2】:

    您似乎在问如何填充数组。这是一种方法:

        final Random rnd = new Random();
        final int n = 100000;
        final int[] array = new int[n];
        for (int i = 0; i < n; ++i) {
            array[i] = rnd.nextInt();
        }
        Arrays.sort(array);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      相关资源
      最近更新 更多