Добавление значений данных в алгоритм поиска?
Как добавить, скажем, 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);