User terranum
terranum
28 уровень
Milan

Кухня(); Задание N10.

Статья из группы Архив info.javarush.ru
Кухня(); Задание N10. - 1 Правила [Одномерные массивы] 10. Даны действительные числа a1, a2, …, an. Поменять местами наибольший и наименьший элементы.
Комментарии (6)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Андрей Андросенко Уровень 8, Гомель, Беларусь
28 октября 2021
public class Task04 { public static void main(String[] args) { double[] array = {4, 1.6, 1, 0, -1, 5, 9, 7, 8, 2};//заполняем массив System.out.println("Мы имеем массив: \n" + Arrays.toString(array)); double min; int minN; minN = 0; min = array[0]; for (int i = 0; i < array.length; i++)//ищем минимальный элемент { if (array[i] < min) { min = array[i]; minN = i;//запоминаем номер элемента } } double max; int maxN; maxN = 0; max = array[0]; for (int i = 0; i < array.length; i++)//ищем максимальный элемент { if (array[i] > max) { max = array[i]; maxN = i;//запоминаем номер элемента } } double revers; revers = array[maxN]; array[maxN] = array[minN]; array[minN] = revers; System.out.println("\nМы получили массив: \n" + Arrays.toString(array)); } }
RabenokDmitry Уровень 21, Саратов
6 февраля 2015
public static void changeMinMax(double[] array) {
        if (array.length == 0)
            throw new IllegalArgumentException("Массив нулевой длины!");
        int min = 0;
        int max = 0;
        for (int i = 0; i < array.length; i++) {
            if (array[i] > max)
                max = i;
            if (array[i] < min)
                min = i;

        }

        double tmp = array[max];
        array[max] = array[min];
        array[min] = tmp;

    }

Хотел выпендирться и написать замену через XOR, но потом осознал что она работает только с int'ами)
terranum Уровень 28, Milan, Италия
24 августа 2014
Ты их как орешки щелкаешь! :)

Ради извращения, если без tmp?)
Docktor91 Уровень 40, Калининград, Россия
24 августа 2014
public static double[] swapMinMax(double... values)
    {
        if (values.length == 0)
            throw new IllegalArgumentException("data is empty");
        int mini = 0;
        int maxi = 0;
        for (int i = 1; i < values.length; i++)
        {
            mini = values[i] < values[mini] ? i : mini;
            maxi = values[i] > values[maxi] ? i : maxi;
        }
        double tmp = values[maxi];
        values[maxi] = values[mini];
        values[mini] = tmp;
        return values;

    }