Кухня(); Второй сезон - 73/79



73. Сортировка выбором. Дана последовательность чисел а1, а2, ..., аn. Требуется переставить элементы так, чтобы они были расположены по убыванию. Для этого в массиве, начиная с первого, выбирается наибольший элемент и ставится на первое место, а первый – на место наибольшего. Затем, начиная со второго, эта процедура повторяется. Написать алгоритм сортировки выбором.

2 комментария

iZulrad

     /**
     * @param arr - массив для сортировки
     * @param len - длина массива
     */
    public static void selectionSort(@NotNull int[] arr, int len) {
        int dex;
        for (int l = 0; l < len - 1; l++) {
            for (int i = (dex = l) + 1; i < len; i++) if (arr[dex] < arr[i]) dex = i;
            if (dex != l) arr[l] = ((arr[dex] ^= arr[l] ^= arr[dex])) ^ arr[l];
        }
    }
terranum

public static void selectionSort(@NotNull int[] arr) {
        int index;
        int tmp;
        for (int i = 0; i < arr.length; i++) {
            index = i;
            tmp = arr[i];
            for (int j = i + 1; j < arr.length; j++)
                if (arr[j] > tmp) {
                    tmp = arr[j];
                    index = j;
                }
            if (index == i)
                continue;
            tmp = arr[i];
            arr[i] = arr[index];
            arr[index] = tmp;
        }
    }


Предложу свой вариант, тут как бы все просто, странно что никто еще не предложил что то подобное.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.