Как вывести элементы массива в обратном порядке

от admin

Как поменять элементы массива в обратном порядке в Java

Напишите программу, которая меняет местами элементы одномерного массива из String в обратном порядке. Не используйте дополнительный массив для хранения результатов.

Решение:
Комментарии к задаче:

В результате выполнения этого кода получим перевернутый массив: вместо «Каждый охотник желает знать где сидит фазан» — «фазан сидит где знать желает охотник Каждый «

Как была решена задача? Основная ее часть — это фрагмент:

Он по очереди меняет местами противоположные элементы массива, используя как посредника дополнительную переменную String temp (temp — от temporary, «временный»). Можно было бы обойтись и без нее, если бы массив хранил переменные числового типа.

Тут есть a[i] и малопонятное a[n-i-1]. Но на самом деле n-i-1 это просто формула для определения «противоположного» элемента массива:

task2_arr_prince

Если бы мы имели массив, который бы состоял из элементов 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 );
?>

Похожие статьи