python
May 27, 2020

Сортування підрахунком на Python

27.05.20. Час прочитання - 5 хв

Сортування підрахунком (Counting sort) — алгоритм впорядкування, що застосовується при малій кількості різних елементів (ключів) у масиві даних. Час його роботи лінійно залежить як від загальної кількості елементів у масиві так і від кількості різних елементів. Ідея алгоритму полягає у тому, щоб підрахувати скільки разів кожен елемент зустрічається у вихідному масиві. Спираючись на ці дані можна одразу вирахувати на якому місці має стояти кожен елемент, а потім за один прохід поставити всі елементи на свої місця.

Алгоритм

Підраховуємо скільки разів в масиві зустрічається кожне значення, і заповнюємо масив підрахованими елементами у відповідних кількостях. Лічильники для всього діапазону чисел створюються заздалегідь (спочатку дорівнюють нулю).

Складність сортування за часом

1. Найгірша O (n + k)
2. Середня O (n + k)
3. Краща O (n)

Кроки до правильного рішення

1. Створюємо функцію counting_sort, яка приймає на вхід список і змінну largest.

2. Усередині функції створюємо список з нулями та довжиною largest + 1.

3. Для кожного елемента вхідного списку збільшуємо значення елемента наступним чином c[alist [i]] = c[alist [i]] + 1.

4. Тепер список містить частоту кожного елемента вхідного списку.

5. Кожному елементу від 1 до length (c) -1 додаємо до значення поточного елемента значення попереднього c[i] = c[i] + c [i - 1].

6. Створюємо result список з таким же розміром, як і вхідний список.

7. Створюємо цикл, який ітерується по списку в зворотному порядку.

8. У кожній ітерації циклу встановлюємо result [c[x]] = x, а потім зменшуємо c[x]на 1.

Сподіваємось, Вам було цікаво та корисно.
Ставте плюсик в коментарях, якщо хочете, щоб ми частіше публікували інформацію про алгоритми➕...