Как перевернуть массив в джава
Перейти к содержимому

Как перевернуть массив в джава

  • автор:

Реверс массива

Существует массив и его надо развернуть (или инвертировать) и получить массив .

Находим середину массива — array.length / 2 . Перебираем элементы массива от начала до середины и одновременно меняем местами элементы с индексом i и array.length — i — 1 . Для обмена значениями используем вариант с введением временной переменной, рассмотренный в предыдущем разделе:

public class ArrayInverter < public static void invert(int[] array) < for (int i = 0; i < array.length / 2; i++) < int tmp = array[i]; array[i] = array[array.length - i - 1]; array[array.length - i - 1] = tmp; >> >

Обратите внимание, что в классе ArrayInverter нет метода main() — будем вызывать метод invert() из другого класса. Для вызова метода, находящегося в другом классе, пишем имя класса — ArrayInverter.invert(array1) :

import java.util.Arrays; public class ArrayInverterTest1 < public static void main(String[] args) < int[] array1 = new int[]<>; System.out.print(Arrays.toString(array1) + " => "); ArrayInverter.invert(array1); System.out.println(Arrays.toString(array1)); array1 = new int[]; System.out.print(Arrays.toString(array1) + " => "); ArrayInverter.invert(array1); System.out.println(Arrays.toString(array1)); array1 = new int[]; System.out.print(Arrays.toString(array1) + " => "); ArrayInverter.invert(array1); System.out.println(Arrays.toString(array1)); array1 = new int[]; System.out.print(Arrays.toString(array1) + " => "); ArrayInverter.invert(array1); System.out.println(Arrays.toString(array1)); array1 = new int[]; System.out.print(Arrays.toString(array1) + " => "); ArrayInverter.invert(array1); System.out.println(Arrays.toString(array1)); > >

Если мы внимательно посмотрим на код в классе ArrayInverterTest1 , то увидим, что один блок кода повторяется пять раз. Дублирование кода — это плохая практика, поэтому вынесем повторяющийся код в отдельный метод, который будет вызываться пять раз с разными значениями:

import java.util.Arrays; public class ArrayInverterTest2 < public static void main(String[] args) < testInvert(new int[]<>); testInvert(new int[]); testInvert(new int[]); testInvert(new int[]); > private static void testInvert(int[] array) < System.out.print(Arrays.toString(array) + " =>"); ArrayInverter.invert(array); System.out.println(Arrays.toString(array)); > > 
  • Среднее арифметическое
  • Числа Фибоначчи
  • Вычисление сложности алгоритма
  • Метод swap
  • Алгоритм сортировки пузырьком
  • Сортировка выбором
  • Поиск элемента в массиве
  • Задания

Array.prototype.reverse()

Метод reverse() на месте обращает порядок следования элементов массива. Первый элемент массива становится последним, а последний — первым.

Интерактивный пример

Синтаксис

array.reverse()

Параметры

Возвращаемое значение

Описание

Метод reverse() на месте переставляет элементы массива, на котором он был вызван, изменяет массив и возвращает ссылку на него.

Примеры

Пример: обращение порядка элементов в массиве

В следующем примере создаётся массив myArray , содержащий три элемента, а затем массив переворачивается.

var myArray = ["один", "два", "три"]; myArray.reverse(); console.log(myArray); // ['три', 'два', 'один'] 

Спецификации

Specification
ECMAScript Language Specification
# sec-array.prototype.reverse

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

  • Array.prototype.join()
  • Array.prototype.sort()
  • TypedArray.prototype.reverse() (en-US)

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 4 авг. 2023 г. by MDN contributors.

Your blueprint for a better internet.

MDN

Support

  • Product help
  • Report an issue

Our communities

Developers

  • Web Technologies
  • Learn Web Development
  • MDN Plus
  • Hacks Blog
  • Website Privacy Notice
  • Cookies
  • Legal
  • Community Participation Guidelines

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2024 by individual mozilla.org contributors. Content available under a Creative Commons license.

Как развернуть массив в java

Для разворота (инвертирования) массива в Java можно использовать простой алгоритм, который меняет местами первый элемент массива с последним, затем второй элемент с предпоследним, и так далее, пока не будут поменяны местами все элементы.

Вот пример кода:

public static void reverseArray(int[] arr)  int temp; for (int i = 0; i  arr.length / 2; i++)  temp = arr[i]; arr[i] = arr[arr.length - 1 - i]; arr[arr.length - 1 - i] = temp; > > 

Этот метод принимает в качестве аргумента массив arr, и меняет местами его элементы в обратном порядке. Мы используем временную переменную temp , чтобы поменять местами элементы массива.

int[] numbers = 1, 2, 3, 4, 5>; System.out.println("Original array: " + Arrays.toString(numbers)); reverseArray(numbers); System.out.println("Reversed array: " + Arrays.toString(numbers)); 

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

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

Решение:

Princeton_2.1
public class Test < public static void main ( String [ ] args ) < String [ ] a = < "Каждый " , " охотник " , " желает " , " знать " , " где " , " сидит " , " фазан " >;
//Выводим изначальный массив в консоль
for ( int i = 0 ; i < a . length ; i ++ ) < System . out . print ( a [ i ] ) ; System . out . println ( ) ; int n = a . length ; //Переменная, которая будет использоваться при обмене элементов String temp ; for ( int i = 0 ; i < n / 2 ; i ++ ) < temp = a [ n - i - 1 ] ; a [ n - i - 1 ] = a [ i ] ; a [ i ] = temp ; //Выводим конечный массив в консоль for ( int i = 0 ; i < a . length ; i ++ ) < System . out . print ( a [ i ] ) ;

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

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

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

int n = a . length ;
String temp ;
for ( int i = 0 ; i < n / 2 ; i ++ ) < temp = a [ n - i - 1 ] ; a [ n - i - 1 ] = a [ i ] ; a [ i ] = temp ;

Он по очереди меняет местами противоположные элементы массива, используя как посредника дополнительную переменную 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 8 Stream Files
  • Раздача карт в покере в Java →

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *