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

  Рет қаралды 71,260

egoroff_channel

egoroff_channel

5 жыл бұрын

🔥🔥🔥 Инди-курс по Python 🔥🔥🔥
stepik.org/course/63085/promo
👉👉👉 Свой вопрос по курсу можешь задать в чате
t.me/+SlnNhAO7caBlNDM6
👉👉👉 Также подписывайся на мой телеграмм-канал
t.me/python_egoroff
Стать спонсором канала
/ @egoroffchannel
boosty.to/egoroff_channel
/ artem_egorov
egoroffartem.pythonanywhere.co...
Сортировка подсчётом( counting sort ) - алгоритм сортировки, в котором используется диапазон чисел сортируемого массива (списка) для подсчёта совпадающих элементов. Применение сортировки подсчётом целесообразно лишь тогда, когда сортируемые числа имеют диапазон возможных значений, который достаточно мал по сравнению с сортируемым множеством.
Идея сортировки: подсчитываем сколько раз в массиве встречается каждое значение и заполняем массив подсчитанными элементами в соответствующих количествах.
egoroffartem.pythonanywhere.co...
Подробная информация об этом уроке
Все видео этого курса можете найти на сайте
egoroffartem.pythonanywhere.co...
или в Вк
videos-177962775?secti...
Если кому нужна помощь, предлагаю индивидуальные занятия. Подробнее пишите в личку в вк
artem_egoroff
python.study
В данном группе можете найти информацию о новых видео и задать вопросы

Пікірлер: 92
@egoroffchannel
@egoroffchannel 23 күн бұрын
🫵 Теория без практики - ничто, поэтому 👇 🐍 stepik.org/course/63085/promo 👉 специально для тебя создал бесплатный топовый курс по Python 👉 В нем тебя ждет: 📗 более 400 практических заданий на программирование 📗 более 250 тестовых заданий на проверку материала 📗 десятки часов видеоматерилов по теории 📗 видеоразборы решения заданий 📗 текстовые материалы по урокам, примеры кода 📗 доступ к закрытому чату с дружественной обстановкой 📗 сертификат в случае успешного прохождения курса
@Dmitrii-Zhinzhilov
@Dmitrii-Zhinzhilov Жыл бұрын
Артём, благодарю! Отличный урок! 🔥👍🤝
@njpk666
@njpk666 4 жыл бұрын
Очень хорошо и доступно объяснил спасибо
@donrumata9197
@donrumata9197 Жыл бұрын
Спасибо. Ловкие варианты реализации. Мне нравится
@tankist5934
@tankist5934 3 жыл бұрын
Дошел до 27 урока. Все понятно и разложено по полочкам. Так же стал впервые спонсором. Для написания кода использую Visual Studio Code. Так же для закрепления тем делаю задания, которые мне сбрасывает брат(учится на программиста). Так вот, что я скажу. За пару дней обучения, написал примитивную программу калькулятора. Автору данного канала надо идти в преподаватели. Хорошее преподнесение материала. Годный контент. + советую смотреть лекции Тимофея Хирьянова.
@egoroffchannel
@egoroffchannel 3 жыл бұрын
куда идти преподавать?)
@user-cj4lr3qy6j
@user-cj4lr3qy6j 3 жыл бұрын
@@egoroffchannel мфти
@user-hl8hv6wj5n
@user-hl8hv6wj5n Жыл бұрын
@@egoroffchannel с Вашим талантом доносить информацию в любой элитный универ)
@nicholasspezza9449
@nicholasspezza9449 10 ай бұрын
тут всего 6 видосов, ты там под солями чтоли?
@denistalko6585
@denistalko6585 2 жыл бұрын
Отличное объяснение! Спасибо!
@thepoison1003
@thepoison1003 Жыл бұрын
бип бип бип бип бип бип бип бип, это переставляем сюда , это вот сюда дописываем(беру команду которую разбирали в третьем занятие вскользь за 5 сек. которую уже конечно никто из новичков не помнит) и всё прекрасно работает. А почему это так делаем, автор не объясняет. Просто потому что. Но это же материал не на запоминание, он на понимание, нужно разжёвывать, что и как а главное почему так, а не иначе делаешь. Объясняет автор основы не плохо, но вот практические решения для новичков просто выглядит как лютая дичь. Всё быстро, всё вскользь, без толкового разъяснения.
@MsWithoutNick
@MsWithoutNick Жыл бұрын
я честно говоря тоже на этом уроке зависла конкретно. вчера вечером 2 раза посмотрела начало ничего не поняла. на утро решила пересмотреть. тоже ничего не понимаю с 3 раза. про подсчет. ну как-то как бы... да...!
@neopoligraf9991
@neopoligraf9991 4 жыл бұрын
Хороший урок, спасибо!
@user-zs4us8xe2h
@user-zs4us8xe2h 5 жыл бұрын
Спс за видео, бро
@yodapunishes
@yodapunishes 4 жыл бұрын
Супер!
@frogfrogfrog6288
@frogfrogfrog6288 4 жыл бұрын
боже как красиво
@user-wl2iv9wc6v
@user-wl2iv9wc6v 9 ай бұрын
Пример из урока вот так модифицировал, чтоб можно было в список любое положительное число добавить, а не только до пяти: 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)
@onlaynstudy8811
@onlaynstudy8811 Жыл бұрын
Спс.Хорошо объясняете... Ели ели понял
@alex_pure
@alex_pure 2 жыл бұрын
Переключение гравитации: 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
@alex_pure 2 жыл бұрын
Щедрый Кефа: n, k = list(map(int, input().split())) s = list(input()) count = [0] * (ord(max(s)) - 96) for i in s: count[ord(i) - 97] += 1 for i in range(len(count)): if count[i] > k: print('NO') break else: print('YES')
@alex_pure
@alex_pure 2 жыл бұрын
Веселая шутка: n = list(input()) k = list(input()) nk = n + k s = list(input()) letters = [0] * 26 for i in nk: letters[ord(i) - 65] += 1 for i in s: letters[ord(i) - 65] -= 1 for i in range(len(letters)): if letters[i] != 0: print('NO') break else: print('YES')
@egoroffchannel
@egoroffchannel 4 жыл бұрын
Стать спонсором kzbin.info/door/McC_43zGHttf9bY-xJOTwAjoin Стать патроном www.patreon.com/posts/34559680 www.patreon.com/artem_egorov
@danielsmith7840
@danielsmith7840 3 жыл бұрын
Very Good
@vasbkamarxil1260
@vasbkamarxil1260 Жыл бұрын
сложно . . . как это уложить теперь) чувствую себя двух ядерным)
@user-ku6lc8zu4b
@user-ku6lc8zu4b 5 жыл бұрын
Спасибо за очередной хороший урок. Подскажи, какие настройки шрифта в PyCharm ты используешь? А то дефолтный мне не нравится, а чтобы, как у тебя не получилось сделать.
@egoroffchannel
@egoroffchannel 5 жыл бұрын
я менял только размер шрифта, больше ничего
@user-ku6lc8zu4b
@user-ku6lc8zu4b 5 жыл бұрын
@@egoroffchannel а как называется шрифт?
@egoroffchannel
@egoroffchannel 5 жыл бұрын
@@user-ku6lc8zu4b DialogInput
@user-ku6lc8zu4b
@user-ku6lc8zu4b 5 жыл бұрын
@@egoroffchannel спасибо!
@user-cr8rp6xj2l
@user-cr8rp6xj2l 5 жыл бұрын
alist = list(range(1, 11)) random.shiffle(alist)
@mefodymo7456
@mefodymo7456 3 жыл бұрын
👍
@jamjam3337
@jamjam3337 Жыл бұрын
👏
@Dim_chick
@Dim_chick Жыл бұрын
Изменение гравитации n = int(input("Кол-во столбов: ")) count = [] if 1
@Sofronov_channel
@Sofronov_channel 11 ай бұрын
a = [1, 2, 3, 4, 3, 5, 6, 4, 3, 7] double = [] for index, item in enumerate(a): if a.count(item) > 1: double.append(index) print("Индексы повторяющихся элементов:", double)
@jamshidomonov551
@jamshidomonov551 10 ай бұрын
Здравствуйте Артём посмотрев этот видеоурок я не понял одно: почему вы написали letters = [0] * 26 Объясните пожалуйста откуда взяли нуливой индекс ?
@bossd465
@bossd465 4 жыл бұрын
Задача А переключение гравитации: 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)
@bot_N666
@bot_N666 Жыл бұрын
Я так понимаю это метод сортировки пузырьком?
@serhiilykhodid8911
@serhiilykhodid8911 4 жыл бұрын
Мои решения задач урока: Переключение гравитации: n = int(input()) a = map(int, input().split()) a = list(a) b = [0] * (max(a) + 1) for i in a: b[i] = b[i] + 1 for i in range(max(a) + 1): if b[i] > 0: print((str(i) + ' ') * b[i], end='') Веселая шутка: a = input() b = input() mix = input() c = a + b x = '' z = '' letters = [0] * 26 letters2 = [0] * 26 for i in c: nomer = ord(i) - 65 letters[nomer] = letters[nomer] + 1 for i in range(26): if letters[i] > 0: x = x + (str(chr(i + 65)) * letters[i]) for i in mix: nomer2 = ord(i) - 65 letters2[nomer2] = letters2[nomer2] + 1 for i in range(26): if letters2[i] > 0: z = z + (str(chr(i + 65) * letters2[i])) if x == z: print('YES') else: print('NO')
@hrostmystepko1832
@hrostmystepko1832 2 жыл бұрын
Задача 1 . Гравітація ______________________________ n = int(input()) a = list(map(int, input().split())) s = [0] * 101 for i in a: s[i] += 1 for i in range(101): if s[i]>0: print((str(i)+' ')*s[i],end='')
@AndronM
@AndronM Жыл бұрын
А почему 21 значение? Вроде в функции random.randint() последнее число не включается?(11:52)
@user-pk1qg5cw6b
@user-pk1qg5cw6b Жыл бұрын
а как решить такую задачу со словами? по количеству расположить количество слов в строке?
@doinkes7764
@doinkes7764 2 жыл бұрын
Уроки эти смотрю вроде все понятно, а как доходит до задания на степике, где процент решения 20-30%, то все валюсь, ничего не помню и не понимаю, аж плакать хочется. и эта тема в том числе.
@bot_N666
@bot_N666 Жыл бұрын
Почему вы не используете возможности автоматизма некоторых значений? count = [0] × len(a) Или еще: смещение = 0 - min(a)
@AndyMooren
@AndyMooren Жыл бұрын
Потому что это в корне не верно. len(a) = 10 т.к. список в целом состоит из 10 рандомных значений. А count мы используем для подсчета ВСЕХ возможных значений, а их 21. Во-вторых, смещение в Вашем случае можно быть ошибочно в случае, если минимальное значение(а у нас РАНДОМНЫЕ значение, т.к. -10 будет в списке далеко не каждый раз) будет не равно -10.
@user-vs3yh4dn7l
@user-vs3yh4dn7l 4 жыл бұрын
в randint не как в range, последнее число берет включительно? randint(-10, 10) = 21, не 20?
@nikman3291
@nikman3291 4 жыл бұрын
У меня проблема с воспроизведением программы (ну то есть которую мы создаём с помощью кодов). Я видел, что у вас есть Run 'podshet', но у меня его нету (я знаю, что 'podschet'-это имя').Что делать в этой ситуации?
@makseo651
@makseo651 9 ай бұрын
Если говорится о списках, то почему не использовать для подсчета элементов метод списка - count ?
@konstantinkist
@konstantinkist 5 жыл бұрын
Мне кажется что не опытным ребятам было - бы проще понять почему вы использовали смещение именно на 10, если бы вы сразу создали переменную со значением 10 и дальше использовали ее... Хотя, может я и не прав, но мне кажется что так проще проследить связи...
@egoroffchannel
@egoroffchannel 5 жыл бұрын
спасибо за комментарий. Главное, чтобы понимали саму суть смещения и почему без него не обойтись. А где его хранить, значением или в отдельной переменной, это уже дело реализации.
@C0oo1D
@C0oo1D 5 жыл бұрын
Magic numbers.. По моему, данная практика ни в одном языке не приветствуется.. Но это не точно)
@Anton16180
@Anton16180 Жыл бұрын
В уроке не объяснен принцип, по которому строится конструкция метода. Потратил 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: offset_number_count_lst[i+index_offset] += 1 result = [] for i in range(len(offset_number_count_lst)): if offset_number_count_lst[i] > 0: result.append((i-index_offset, offset_number_count_lst[i])) return result
@hrostmystepko1832
@hrostmystepko1832 2 жыл бұрын
Вариант решения 2ой задачи, но не уверен что он правильный __________________________________________________________________ n=int(input()) k=int(input()) a=input() l=[0]*n x=0 for i in a: l[ord(i)-97]+=1 for i in range(n): if l[i]>0: if l[i]/k!=1: x+=1 if x>0: print('NO') else: print('YES')
@user-ee1lx1pe7n
@user-ee1lx1pe7n 3 жыл бұрын
Ребята, чтобы вы не пугались этого непростого способа подсчета (который все равно нужно знать), есть более гуманный способ: from collections import Counter s = [2, 1, 2, 3, 2, 1, 2, 3, 3, 2, 4, 3, 5, 4, 2] print(dict(Counter(s)))
@loqlok5961
@loqlok5961 4 жыл бұрын
Возможно глупый вопрос, но он мне не дает покоя. Почему в 3-ей строке "i" определяется как элемент списка "а", а не как индекс, ведь до этого мы никак не обозначали "i"? Заведомо заложено, что при подобном использовании цикла переменная будут означать элемент? Спасибо.
@egoroffchannel
@egoroffchannel 4 жыл бұрын
Происходит автоматическое присвоение переменной i и если до этого переменная не существовала, она будет создана
@Mr_Boriss
@Mr_Boriss 4 жыл бұрын
у меня сам по себе закрывает мой файл и пишет, что то про защитник виндовс
@hrostmystepko1832
@hrostmystepko1832 2 жыл бұрын
Может кто-нибуть подскажет почему в Pycharm при вводе через команду: n,k=map(int,input().split()) выдает такую ошибку: ValueError: invalid literal for int() with base 10
@bot_N666
@bot_N666 Жыл бұрын
list не реализовали
@rollangrant8347
@rollangrant8347 4 жыл бұрын
фишка в том, что этот метод работает только с положительными числами))
@egoroffchannel
@egoroffchannel 4 жыл бұрын
Нет, ты можешь сделать смещение своим отрицательным числам до нулевого индекса, и вперед
@BostonZakim
@BostonZakim 5 жыл бұрын
Пишу для себя условия задач из урока и потом по условию решаю самостоятельно на следующий день для закрепления. Может кому будет полезно: 27 метод подсчета. Сортировка методом подсчета. Задача: подсчитать сколько раз встретилось каждое число в этом списке. вывести списком. затем, вывести цифру и сколько раз она встречалась затем, не выводить цифру которая не встречалась ни разу затем, отсортировать список по возрастанию a = [0, 1, 2, 2, 2, 1, 2, 3, 3, 2, 2, 3, 5, 3, 2] count = [0] * 6 for i in a: count[i] += 1 print(count) #вывести списком. for i in range(6): if count[i]>0: print(i, count[i]) #вывести цифру и сколько раз она встречалась a = [0, 1, 2, 2, 2, 1, 2, 3, 3, 2, 2, 3, 5, 3, 2] count = [0] * 6 for i in a: count[i] += 1 print(count) for i in range(6): if count[i]>0: print((str(i)+' ')* count[i],end='') задача. Есть строка, где написаны буквы, большие и маленькие, цифры и знаки пунктуации. Нужно посчитать сколько раз встретилась каждая буква. Разницы между большими и маленькими буквами нет. Знаки не считать. Условием задано букв 25. s = 'asdf sffaaafdf g FFsdfEE 234566 ^***&' letters = [0]* 26 for i in s.lower(): if 'a' 0: print(i - 10, count[i])
@egoroffchannel
@egoroffchannel 5 жыл бұрын
я на сайте www.egoroffartem.ru/course/python/ по мере возможности под каждым видео пытаюсь разместить текстовую версию каждого занятия
@BostonZakim
@BostonZakim 5 жыл бұрын
@@egoroffchannel я всегда после урока проверяю все что написано под видео в ютуб и по ссылке на сайт тоже захожу, опускаюсь вниз и пересматриваю задачи. Но там обычно задачи космос, у меня их мозг просто не воспринимает. Хочется хотя бы самому воспроизвести то что рассказывали.
@egoroffchannel
@egoroffchannel 5 жыл бұрын
я не про задачи говорю, а про текстовый вариант видео. к примеру вот www.egoroffartem.ru/course/python/41
@BostonZakim
@BostonZakim 5 жыл бұрын
@@egoroffchannel да, круто. Я просто туда еще не дошел. На 27 уроке еще :)
@dimaan29
@dimaan29 4 жыл бұрын
count[i] += 1 - в нем выдает ошибку 'list index out of range'
@timd9077
@timd9077 4 жыл бұрын
Возможно ты в самом начале в списке "а" вписал цифры превышающие количество нолей в списке count .
@alexseydugin8109
@alexseydugin8109 4 жыл бұрын
На 13:28 есть -10, а потом уже куда то пропала
@lashmyash
@lashmyash 4 жыл бұрын
список состоит из рандомных чисел, при повторном запуске программы список генерировал их заново
@alexseydugin8109
@alexseydugin8109 4 жыл бұрын
Alisa Shalamova эээ точно, спасибо :)
@valley527
@valley527 4 жыл бұрын
блин нифига не понятно, такое ощущение что автор куда то спешит, все вперемешку
@alexandrshatilov8227
@alexandrshatilov8227 4 жыл бұрын
он и так довольно подробно объяснил. Если тебе не понятно, то, скорее всего, тебе стоит сначала изучить вещи попроще. До этого есть ещё 26 уроков, я их не смотрел ес честно)))(только про установку pycharm), но, думаю, что за 27 уроков он объяснил чё такое индексы, циклы, что такое отладка и всё это безобразие. Так что, то, что тебе ниче не понятно, - это большей частью твоя проблема
@valley527
@valley527 4 жыл бұрын
@@alexandrshatilov8227 спасибо за совет, я их смотрел. Но так как это все таки уроки для начинающих, а ученики бывают разные, есть особо одаренные, есть тупые как я, то нужно более подробно обьяснять такие моменты, и не мешать все в одну кучу.
@NikolaiKim
@NikolaiKim 4 жыл бұрын
@@valley527 тоже самое, все смотрел, а теперь дичь
@NikolaiKim
@NikolaiKim 4 жыл бұрын
Пересмотрел с 23 урока второй раз и стало все понятно. Тебе тоже советую
@valley527
@valley527 4 жыл бұрын
@@NikolaiKim уже нашёл других учителей, в частности Андрей Андреевский очень хорошо объясняет, весь интернет перелопатил не мог понять что такое классы и как их применять, после его ролика все стало понятно. Но спасибо и автору этого урока, он дал мне кое какие основы
@sbhajasbajqihsiwb3379
@sbhajasbajqihsiwb3379 Жыл бұрын
я в ах*е
@smileofnight9187
@smileofnight9187 Жыл бұрын
м
@francoislacoste2113
@francoislacoste2113 2 жыл бұрын
подскажите, а в чем смысл таких извращений, если десятки лет назад умными людьми был прописан count()?
@bbmdick4324
@bbmdick4324 4 жыл бұрын
кто первую задачу решил?
@user-zw5lq8wv7o
@user-zw5lq8wv7o Жыл бұрын
Веселая шутка еще одно решение, в ютубе есть видео , где объясняют довольно понятно import sys guest_name = list(sys.stdin.readline()[:-1]) host_name = list(sys.stdin.readline()[:-1]) pile = list(sys.stdin.readline()[:-1]) while len(pile) != 0: if guest_name.count(pile[0]) == 0 and host_name.count(pile[0]) == 0: print('NO') sys.exit() else: if guest_name.count(pile[0]) != 0: guest_name.remove(pile[0]) else: host_name.remove(pile[0]) pile.remove(pile[0]) if len(guest_name) !=0 or len(host_name) != 0 or len(pile) != 0: print('no') else: print('yes')
@user-xl6gp9em1b
@user-xl6gp9em1b 10 ай бұрын
Да, очень быстро рассказывает, и так в каждом видео
@user-zw5lq8wv7o
@user-zw5lq8wv7o Жыл бұрын
Веселая шутка, решено по другому def main(): name1 = input('enter name') name2 = input('enter name') scum_worlds = input('letters') foo(name1, name2, scum_worlds) def foo(name1, name2, scum_worlds): name1 = name1 + name2 name1 = list(name1) name1.sort() scum_worlds = list(scum_worlds) scum_worlds.sort() if scum_worlds == name1: print('YES') else: print('NO') if __name__ == '__main__': main()
@ananasanimator6049
@ananasanimator6049 Жыл бұрын
Переключение гравитации: 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='')
28 Вложенные циклы Python
16:45
egoroff_channel
Рет қаралды 104 М.
Сортировка подсчетом (counting sort)
5:37
Evgeniy M
Рет қаралды 26 М.
Backstage 🤫 tutorial #elsarca #tiktok
00:13
Elsa Arca
Рет қаралды 42 МЛН
DELETE TOXICITY = 5 LEGENDARY STARR DROPS!
02:20
Brawl Stars
Рет қаралды 17 МЛН
MEU IRMÃO FICOU FAMOSO
00:52
Matheus Kriwat
Рет қаралды 12 МЛН
Super gymnastics 😍🫣
00:15
Lexa_Merin
Рет қаралды 99 МЛН
Задача из Собеседования на 160,000 Евро в Год
13:27
Саша Лукин
Рет қаралды 1,1 МЛН
Советский мультфильм про нашу жизнь !
13:49
Дедушка Аргентинца
Рет қаралды 2,9 МЛН
Сортировка Шелла. Shell sort. Python
12:15
TheProgrammer'sWay
Рет қаралды 10 М.
Как в 44 года стать программистом на Python. Объясняю с чего начать.
19:32
Backstage 🤫 tutorial #elsarca #tiktok
00:13
Elsa Arca
Рет қаралды 42 МЛН