Правила[Одномерные массивы]46. Дан массив целых чисел. Найти в этом массиве минимальный элемент N и максимальный элемент M. Получить в порядке возрастания все целые числа из интервала (N; М), которые не входят в данный массив.
Странные у тебя ассоциации с болью, когда тебя кто-то поправляет и указывает на неточность — ты испытываешь боль? Ну да ладно, у каждого свои тараканы.
Тогда так:
public static void getIntNumberFromMinToMax (int[] array) {
if (array.length == 0) System.out.println("Wrong data! Array is empty");
else {
Arrays.sort(array);
for (int i = array[0]; i <= array[array.length - 1]; i++) {
if (Arrays.binarySearch(array, i) < 0) System.out.print(i + " ");
}
}
}
Сделал так, потому, что сначала неправильно понял задание и выводил все числа от мин до макс, а потом добавил проверку на наличие в массиве.
ЗЫ. У тебя не работает код.
И? «Получить в порядке возрастания все целые числа из интервала (N; М), которые не входят в данный массив.» N и M — элементы массива а не индекса.
Все верно -2, 10 и 11 входят в массив, потому и не печатает.
не во всех местах указано, что binarySearch правильно работает, только для отсортированного массива, что ж, вы молодцы, хотелось обойтись без сортировки.
Searches the specified array for the specified object using the binary search algorithm.
The array must be sorted into ascending order according to the specified comparator (as by the sort(T[], Comparator) method) prior to making this call.
If it is not sorted, the results are undefined. If the array contains multiple elements equal to the specified object, there is no guarantee which one will be found.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Тогда так:
ЗЫ. У тебя не работает код.
ЗЫ: опишите как он не работает?
печатает:
Все верно -2, 10 и 11 входят в массив, потому и не печатает.
0 неправильно
1, 2 правильно
3, 4, 5 неправильно
6, 7 правильно
9 неправильно
которые не входят в данный массив