Вывод элементов массива на консоль
Дана задача. Есть массив чисел {5, 8, 1, 31, 17, 16, 2, 6, 5, 13}
Мне нужно вывести на экран таким образом:
5, 13
8, 5
1, 6
31, 2
17, 16
Вывести первую строчку получилось, но как дальше хз. Алгоритм понимаю.
int [] a = {5, 8, 1, 31, 17, 16, 2, 6, 5, 13};
for (int i = 0; i <= a.length - 1; i = i + a.length - 1) {
System.out.print(a[i] + " ");
}
Ответы (2 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Цикл можно организовать до середины массива. Дальше не имеет смысла, т.к. мы выводим числа попарно начиная от конца до середины.
for (int i = 0; i < a.length / 2; ++i) {
System.out.println(a[i] + ", " + a[a.length - 1 - i]);
} ^----------------^
Берём число с конца зеркально
Но тут многое не учитывается. Например, что в массиве может быть нечётное количество чисел
int middle = (int)Math.floor((a.length - 1) / 2);
for (int i = 0; i <= middle; ++i) {
if (i == middle && a.length % 2 != 0)
System.out.println(a[i]);
else
System.out.println(a[i] + " " + a[a.length - 1 - i]);
}
Автор решения: default locale
→ Ссылка
Это можно реализовать множеством способов, но, имхо, наиболее простой для понимания способ это проставить два указателя: на начало и конец массива и с каждой итерацией двигать их навстречу друг другу:
int [] a = {5, 8, 1, 31, 17, 16, 2, 6, 5, 13};
int left = 0;
int right = a.length-1;
while(left<right) {
System.out.println(a[left] + " "+a[right]);
left++;
right--;
}
//Строка ниже нужна если средний элемент массива с нечетным
//количеством элементов нужно выводить только один раз.
//Если его нужно продублировать, то строку нужно удалить,
//а в цикле изменить условие на left<=right
if(left==right) System.out.println(a[left]);