Как поменять элементы массива в обратном порядке в Java
Напишите программу, которая меняет местами элементы одномерного массива из String в обратном порядке. Не используйте дополнительный массив для хранения результатов.
Решение:
Комментарии к задаче:
В результате выполнения этого кода получим перевернутый массив: вместо «Каждый охотник желает знать где сидит фазан» — «фазан сидит где знать желает охотник Каждый «
Как была решена задача? Основная ее часть — это фрагмент:
Он по очереди меняет местами противоположные элементы массива, используя как посредника дополнительную переменную String temp (temp — от temporary, «временный»). Можно было бы обойтись и без нее, если бы массив хранил переменные числового типа.
Тут есть a[i] и малопонятное a[n-i-1]. Но на самом деле n-i-1 это просто формула для определения «противоположного» элемента массива:

Если бы мы имели массив, который бы состоял из элементов a, b, c, d, e и f, то есть массив из 6 элементов (n=6), «противоположным» (то есть элементом a[n-i-1]) для каждого из них были бы f для a, e для b и d для c. Цикл из фрагмента кода выполнялся бы три раза, до элемента d (i=0, 1, 2). Граница выполнения массива показана оранжевой линией на рисунке.
Так, обратите внимание, что мы не должны проходить циклом весь массив, чтобы поменять его элементы местами.
Надеемся — наша статья была Вам полезна. Есть возможность записаться на наши курсы по Java. Детальную информацию смотрите у нас на сайте.
Распечатать содержимое массива в обратном порядке в Java
В этом посте мы обсудим, как распечатать содержимое массива в обратном порядке в Java.
1. Распечатать массив в обратном порядке
Простое решение для печати содержимого массива в обратном порядке — использование простого цикла for. Цикл начинается с конца массива, печатает текущий элемент и уменьшает индекс на 1 на каждой итерации.
Вот версия, использующая потоки Java 8:
2. Обратный массив на месте
Если вам нужно перевернуть массив на месте, вы можете использовать любой из следующих методов:
а. Использование цикла For
Идея состоит в том, чтобы поменять местами элементы, начиная с обоих концов массива, пока они не пересекутся. Это легко сделать с помощью цикла for:
результат:
[5, 4, 3, 2, 1]
В приведенном выше решении используются два индекса, по одному для каждого конца массива. Код можно легко изменить, чтобы использовать только один индекс:
результат:
[5, 4, 3, 2, 1]
б. Использование библиотеки Apache Commons Lang
Другой хорошей альтернативой обратному порядку массива является использование Apache Commons Lang. ArrayUtils.add() метод, который перегружен для всех типов примитивов и массивов объектов.
результат:
[5, 4, 3, 2, 1]
в. Использование Guava
С помощью Guava вы можете вызвать Ints.asList() метод для получения списка фиксированного размера, поддерживаемого указанным массивом. Затем позвоните в Collections.reverse() метод, чтобы изменить порядок элементов в списке.
результат:
[5, 4, 3, 2, 1]
3. Создайте перевернутую копию
Если вам не нужно изменять исходный массив, следующее решение создает его обратную копию. Идея состоит в том, чтобы создать новый массив того же размера, что и исходный массив. Затем заполните новые массивы элементами исходного массива в обратном порядке, используя цикл.
Как вывести массив в обратном порядке без использования length
Создаётся массив целых чисел. Нужно вывести массив в обратном порядке.
У меня получается при помощи .length . Есть ли способ сделать это без .length , используя циклы for-each и арифметические действия?
Предположим, что у нас просто есть массив, созданный где-то и как-то (то есть доступа к num и процессу его формирования мы не имеем). А также что нельзя проводить сортировку массива (как оригинала, так и копии) и использовать другие структуры данных (списки, стеки и т.д.). И, конечно, нельзя использовать .length у массива.
Первый вариант. Вычисление длины массива вручную:
Вместо for-each можно воспользоваться обычным циклом в связке с ArrayIndexOutOfBoundsException .
Второй вариант. Использование рекурсии для вывода на экран (по предложению @etki) с ограничением рекурсии с помощью ArrayIndexOutOfBoundsException :
array_reverse
Принимает массив array и возвращает новый массив, содержащий элементы исходного массива в обратном порядке.
Список параметров
Если установлено в true , то числовые ключи будут сохранены. Нечисловые ключи не подвержены этой опции и всегда сохраняются.
Возвращаемые значения
Возвращает массив с элементами в обратном порядке.
Примеры
Пример #1 Пример использования array_reverse()
<?php
$input = array( «php» , 4.0 , array( «green» , «red» ));
$reversed = array_reverse ( $input );
$preserved = array_reverse ( $input , true );
print_r ( $input );
print_r ( $reversed );
print_r ( $preserved );
?>