Задать вопрос
@zaytsev1303

Как зеркально перевернуть часть массива между элементами?

Сделал все кроме зеркальной сортировки между минимальным и максимальным элементами. Сейчас реализовал только обычную сортировку, которая сортирует массив от минимального к максимальному, но это вообще не то, а вот как сделать зеркальную сортировку только между двумя элементами???
Строго не судите, начинаю постигать язык)

/*
Дан линейный целочисленный массив, заполненный
случайными числами из диапазона [-1000; +1000]. Найти элемент с
минимальным значением и элемент с максимальным значением,
зеркально перевернуть часть массива между этими элементами.
 */ 
public class IntegerArra {
    public static void main(String[] args) {
        int indexMin = 0;
        int indexMax = 0;
        int[] IntegerArra = new int[10];
        System.out.printf("Начальный массив: ");
        for (int i = 0; i < 10; i++){
            IntegerArra[i] = ( (int)(Math.random()*2001) - 1000 );
            System.out.printf(IntegerArra[i] + " ");
            }
        int max = IntegerArra[0];
        int min = IntegerArra[0];
        for(int i = 0; i != IntegerArra.length; i ++){
            if(IntegerArra[i] > max){
                max = IntegerArra[i];
                indexMax = i;//запоминаем индекс максимального
                }
            if(IntegerArra[i] < min){
                min = IntegerArra[i];
                indexMin = i;//запоминаем индекс минимального
                }
            }
        System.out.println();
        System.out.println("Минимальный элемент: " + min);
        System.out.println("Максимальный элемент: " + max);
        System.out.println("Положение min индекса: " + indexMin);
        System.out.println("Положение max индекса: " + indexMax);   
//сортировка
        System.out.println(Arrays.toString(IntegerArra));
	Arrays.sort(IntegerArra);
	System.out.println(Arrays.toString(IntegerArra));            
        }
    }
  • Вопрос задан
  • 3698 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@bimeg
int start = Math.min(indexMin, indexMax) + 1;
int end = Math.max(indexMin, indexMax);

int len = end - start;

if (len <= 1)
{
	return;
}

System.out.println(Arrays.toString(IntegerArra));

for (int i = 0; i < len / 2; i++)
{
	int leftInd = start + i;
	int rightInd = end - i - 1;

	int temp = IntegerArra[leftInd];
	IntegerArra[leftInd] = IntegerArra[rightInd];
	IntegerArra[rightInd] = temp;
}

System.out.println(Arrays.toString(IntegerArra));
Ответ написан
Spetros
@Spetros
IT-шник
вот как сделать зеркальную сортировку только между двумя элементами???

Очевидно, сортируя элементы массива только в цикле в диапазоне между индексами мин. и макс. значений, и используя временную переменную для обмена данными.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы