terranum
28 уровень
Milan

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

Пост из группы Архив info.javarush.ru
3786 участников
73. Сортировка выбором. Дана последовательность чисел а1, а2, ..., аn. Требуется переставить элементы так, чтобы они были расположены по убыванию. Для этого в массиве, начиная с первого, выбирается наибольший элемент и ставится на первое место, а первый – на место наибольшего. Затем, начиная со второго, эта процедура повторяется. Написать алгоритм сортировки выбором.
Комментарии (2)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
terranum28 уровень, Milan
26 января 2015, 00:04
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;
        }
    }


Предложу свой вариант, тут как бы все просто, странно что никто еще не предложил что то подобное.
iZulrad34 уровень, Самара
22 января 2015, 12:07
/**
 * @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];
    }
}