Реализация сортировки подсчетом

232
27 февраля 2017, 11:38

Могу реализовать разные сортировки, но с сортировкой подсчетом встречаюсь впервые.

Как реализовать этот алгоритм?Не получается запустить счетчик

    int nums[] = {1, 3, 1, 2, 4, 4, 3, 2, 3, 1};
    int a[] = new int[10];
    int count[] = {};
    int i, j;
    for (i = 0; i < 4; i++) {
        count[i] = 0;
    }
    for (j = 0; j < 10; j++) {
        count[nums[j]] = count[nums[j]] + 1;
        System.out.println(count[j]);
    }
Answer 1

Сортировка подсчетом подразумевает создание корзин (buckets), в каждой из которых хранится количество элементов исходного массива, значение которых совпадает с индексом корзины. Соответственно, нужно иметь корзины, индексы которых будут от минимального значения массива до максимального.

При использовании массива для хранения корзин индексы будут от 0 до X. Чтобы при этом можно было работать с отрицательными числами, а также чтобы не хранить ненужные значения от 0 до минимального значения из массива, имеет смысл перед сортировкой (или непосредственно перед добавлением в корзину) вычесть из всех элементов массива минимум, а после сортировки (при извлечении из корзины) - добавить его обратно.

В итоге получается так:

public static void sort(int[] array)
{
    int min = Integer.MAX_VALUE;
    int max = Integer.MIN_VALUE;
    for (int element : array)
    {
        if (element < min)
        {
            min = element;
        }
        if (element > max)
        {
            max = element;
        }
    }
    int[] buckets = new int[max - min + 1];
    for (int element : array)
    {
        buckets[element - min]++;
    }
    int arrayIndex = 0;
    for (int i = 0; i < buckets.length; i++)
    {
        for (int j = buckets[i]; j > 0; j--)
        {
            array[arrayIndex++] = i + min;
        }
    }
}
READ ALSO
Средства для разработки веб-сервиса Java

Средства для разработки веб-сервиса Java

Необходимо создать приложение в виде:

249
java написать программу [требует правки]

java написать программу [требует правки]

Дан массив A[6,6]Построить массив В(6) по следующему правилу: В(J) присвоить 1, если в J-ом столбце массива А количество ненулевых элементов больше...

238
Ошибка отображения элемента \u232B

Ошибка отображения элемента \u232B

Есть кнопка, вместо текста код отображения символа \u232B в окне редактора все отображается правильно как показано на скрине, но при запуске...

321
Не появляется кнопка закрвающая окно

Не появляется кнопка закрвающая окно

Привет всем! Учу CSS и не получается сделать появление закрывающей кнопки (close) при открытии модального окна

245