27 Метод подсчета. Сортировка подсчетом Python

preview_player
Показать описание
🔥🔥🔥 Инди-курс по Python 🔥🔥🔥

👉👉👉 Свой вопрос по курсу можешь задать в чате

👉👉👉 Также подписывайся на мой телеграмм-канал

Стать спонсором канала

Сортировка подсчётом( counting sort ) — алгоритм сортировки, в котором используется диапазон чисел сортируемого массива (списка) для подсчёта совпадающих элементов. Применение сортировки подсчётом целесообразно лишь тогда, когда сортируемые числа имеют диапазон возможных значений, который достаточно мал по сравнению с сортируемым множеством.

Идея сортировки: подсчитываем сколько раз в массиве встречается каждое значение и заполняем массив подсчитанными элементами в соответствующих количествах.

Подробная информация об этом уроке

Все видео этого курса можете найти на сайте

или в Вк

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

В данном группе можете найти информацию о новых видео и задать вопросы
Рекомендации по теме
Комментарии
Автор

🫵 Теория без практики - ничто, поэтому 👇
👉 специально для тебя создал бесплатный топовый курс по Python
👉 В нем тебя ждет:
📗 более 400 практических заданий на программирование
📗 более 250 тестовых заданий на проверку материала
📗 десятки часов видеоматерилов по теории
📗 видеоразборы решения заданий
📗 текстовые материалы по урокам, примеры кода
📗 доступ к закрытому чату с дружественной обстановкой
📗 сертификат в случае успешного прохождения курса

egoroffchannel
Автор

Дошел до 27 урока. Все понятно и разложено по полочкам. Так же стал впервые спонсором. Для написания кода использую Visual Studio Code. Так же для закрепления тем делаю задания, которые мне сбрасывает брат(учится на программиста). Так вот, что я скажу. За пару дней обучения, написал примитивную программу калькулятора. Автору данного канала надо идти в преподаватели. Хорошее преподнесение материала. Годный контент. + советую смотреть лекции Тимофея Хирьянова.

tankist
Автор

Очень хорошо и доступно объяснил спасибо

njpk
Автор

Спасибо. Ловкие варианты реализации. Мне нравится

donrumata
Автор

Переключение гравитации:
n = int(input())
a = list(map(int, input().split()))
count = [0] * (max(a) + 1)
for i in a:
count[i] += 1
for i in range(len(count)):
print((str(i) + ' ') * count[i], end='')

alex_pure
Автор

Пример из урока вот так модифицировал, чтоб можно было в список любое положительное число добавить, а не только до пяти:
a = [5, 1, 2, 3, 2, 1, 2, 3, 3, 2, 1, 3, 5, 3, 2, 33]
n = max(a) + 1 # n - вместо 6
count = [0] * (n)

dmitrii_kotoff
Автор

бип бип бип бип бип бип бип бип, это переставляем сюда, это вот сюда дописываем(беру команду которую разбирали в третьем занятие вскользь за 5 сек. которую уже конечно никто из новичков не помнит) и всё прекрасно работает. А почему это так делаем, автор не объясняет. Просто потому что. Но это же материал не на запоминание, он на понимание, нужно разжёвывать, что и как а главное почему так, а не иначе делаешь. Объясняет автор основы не плохо, но вот практические решения для новичков просто выглядит как лютая дичь. Всё быстро, всё вскользь, без толкового разъяснения.

thepoison
Автор

Переключение гравитации:
old = list(map(int, input().split()))
new = [0] * (max(old) + 1)
for i in old:
new[i] += 1
for i in range(max(old)+1):
if new[i] > 0:
print((str(i) + ' ') * new[i], end='')

ananasanimator
Автор

А почему 21 значение? Вроде в функции random.randint() последнее число не включается?(11:52)

AndronM
Автор

Спс.Хорошо объясняете... Ели ели понял

onlaynstudy
Автор

В уроке не объяснен принцип, по которому строится конструкция метода. Потратил 4 часа. Вдруг кому пригодится.
# Функция метода смещения для чисел
def number_count(lst):
offset_number_count_lst = [0] * len(range(min(lst)-1, max(lst)))
index_offset = abs(min(lst))
for i in lst:
+= 1
result = []
for i in
if offset_number_count_lst[i] > 0:
result.append((i-index_offset, offset_number_count_lst[i]))
return result

Anton
Автор

То есть, чтобы использовать данный метод нам необходимо заранее знать, какое количество элементов содержит введённый список???

apex_alina
Автор

Если говорится о списках, то почему не использовать для подсчета элементов метод списка - count ?

makseo
Автор

Здравствуйте Артём посмотрев этот видеоурок я не понял одно: почему вы написали letters = [0] * 26
Объясните пожалуйста откуда взяли нуливой индекс ?

jamshidomonov
Автор

Изменение гравитации
n = int(input("Кол-во столбов: "))
count = []

if 1<=n<=5:
for i in range(n):
i = int(input("Кол-во кубиков: "))
count.insert(0, i)
count.sort()
print(count, " - кол-во кубиков после изменения гравитации в каждом столбе.")
else:
print("Кол-во заданных столбов или кубиков не соответствует требованиям ввода. Повторите попытку.")

Dim_chick
Автор

Почему вы не используете возможности автоматизма некоторых значений?
count = [0] × len(a)
Или еще: смещение = 0 - min(a)

bot_N
Автор

сложно . . . как это уложить теперь) чувствую себя двух ядерным)

vasbkamarxil
Автор

а как решить такую задачу со словами? по количеству расположить количество слов в строке?

Искатель-чц
Автор

Задача А переключение гравитации:
n = int(input())
s = input().split()
a = list(map(int, s))
b = [0] * n
for i in range(n):
for j in range(n - 1, i, -1):
if a[i] > a[j]:
a[i], a[j] = a[j], a[i]
print(a)

bossd
Автор

Спасибо за очередной хороший урок. Подскажи, какие настройки шрифта в PyCharm ты используешь? А то дефолтный мне не нравится, а чтобы, как у тебя не получилось сделать.

АлександрГригоренко-гк