Z
Z
zaytsev13032015-02-21 21:15:43
Java
zaytsev1303, 2015-02-21 21:15:43

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

2 answer(s)
B
bimeg, 2015-02-22
@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));

S
Spetros, 2015-02-21
@Spetros

here is how to make a mirror sort only between two elements???

Obviously, sorting the array elements only in a loop in the range between min indices. and max. values, and using a temporary variable for data exchange.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question