Answer the question
In order to leave comments, you need to log in
How to mirror part of an array between elements?
I did everything except mirror sorting between the minimum and maximum elements. Now I have implemented only the usual sorting, which sorts the array from the minimum to the maximum, but this is not the same at all, but how to make a mirror sort only between two elements ???
Do not judge strictly, I'm starting to comprehend the language)
/*
Дан линейный целочисленный массив, заполненный
случайными числами из диапазона [-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));
}
}
Answer the question
In order to leave comments, you need to log in
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));
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question