Добавление значений данных в алгоритм поиска?

Как добавить, скажем, 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);           
}

}

2 ответа

Решение

Итак, если я правильно понимаю, вы хотите попробовать свой алгоритм с различным количеством целых чисел в вашем массиве.

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

Кажется, вы спрашиваете, как заполнить массив. Вот один из способов сделать это:

    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);
Другие вопросы по тегам