Java Поменять местами элементы массива
Помогите поменять местами max и min значение массива. Сами значения нашёл, местами поменял, а как это в массиве непосредственно сделать. Подозреваю, что нужны индексы для этого, но как? мой код:
int[] arr = new int[] ; int max = arr[0]; int min = arr[0]; int maxInd = 0; int minInd = 0; for (int i = 0; i < arr.length; i++) < max = Math.max(max, arr[i]); min = Math.min(min, arr[i]); >int temp = min; min = max; max = temp; System.out.println(min); System.out.println(max); >
Отслеживать
задан 15 янв 2021 в 2:23
113 2 2 серебряных знака 9 9 бронзовых знаков
вам надо найти не сами занчения max и min, а их индексы в массиве. Имея индексы, можно легко поменять элементы местами.
15 янв 2021 в 2:48
В том-то и вопрос. Просто без значения элемента номер индекса не имеет смысла. Нет?
15 янв 2021 в 3:05
Если у вас есть номер индекса, то у вас уже есть значение, так как по номеру индекса всегда это значение можно получить.
15 янв 2021 в 4:08
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Да, для перестановки элементов массива, помимо того что запоминать значение максимального элемента, необходимо также запоминать его индекс (позицию в массиве), причем переменные индексов у вас уже заведены, поэтому остается только реализовать код, например так:
int[] arr = new int[]; int max = arr[0]; int min = arr[0]; int maxInd = 0; int minInd = 0; for (int i = 0; i < arr.length; i++) < if (max >arr[i]) < // сравниваем maxInd = i; // запоминаем индекс max = arr[i]; // запоминаем значение >if (min < arr[i]) < // сравниваем minInd = i; // запоминаем индекс min = arr[i]; // запоминаем значение >> // переставляем элементы int temp = arr[minInd]; arr[minInd] = arr[maxInd]; arr[maxInd] = temp; Arrays.stream(arr).forEach(e-> System.out.println(e)); // вывод массива
Отслеживать
ответ дан 15 янв 2021 в 3:40
678 3 3 серебряных знака 10 10 бронзовых знаков
Запоминать значение не обязательно, если вы запомнили индекс.
15 янв 2021 в 4:07
- java
- for
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как поменять элементы массива в обратном порядке в 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 это просто формула для определения «противоположного» элемента массива:

Если бы мы имели массив, который бы состоял из элементов 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 →
Как поменять местами элементы массива в java
Чтобы поменять местами два элемента массива в Java, нужно будет воспользоваться временной промежуточной переменной. Для примера создадим массив строк из трёх элементов:
String[] animals = "cats", "dogs", "birds">;
Поменяем местами первый и последний элемент массива:
// Создаём промежуточную переменную и записываем туда первый элемент массива String temp = animals[0]; // Меняем местами значения animals[0] = animals[2]; // Значение первого элемента берем из промежуточной переменной animals[2] = temp; System.out.println(Arrays.toString(animals)); // => ["birds", "dogs", "cats"]
Меняем местами элементы массива с помощью стека в Java
Стек представляет собой абстрактный тип данных (ADT), обычно используется в большинстве языков программирования. Он называется стеком, так как он ведет себя как реальный стек, например, колода карт и т. д.
В стеке первый элемент входит и выходит, есть две основные операции: push и pop. Push вставляет в него данные, а pop извлекает данные.
Чтобы инвертировать массив с помощью стека, сначала поместите все элементы в стек, используя метод push(), затем извлеките их обратно с помощью метода pop() в другой массив, таким образом поменяв местами элементы массива.
Пример
import java.util.Arrays; import java.util.Stack; public class ReversinArrayUsingStack < public static void main(String args[]) < Stackstack = new Stack(); int[] myArray = ; int size = myArray.length; for(int i=0; i int[] reverseArray = new int[size]; for(int i=0; i System.out.println("Reversed array is ::"+Arrays.toString(reverseArray)); > >
Итог
Reversed array is ::[39, 92, 56, 93, 23]
Средняя оценка 0 / 5. Количество голосов: 0
Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.
Или поделись статьей
Видим, что вы не нашли ответ на свой вопрос.
Помогите улучшить статью.
Напишите комментарий, что можно добавить к статье, какой информации не хватает.