- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
>>> from heapq import heappush, heappop
>>> heap = []
>>> data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]
>>> for item in data:
... heappush(heap, item)
...
>>> ordered = []
>>> while heap:
... ordered.append(heappop(heap))
...
>>> ordered
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> data.sort()
>>> data == ordered
True
В «Python» есть стандартный модуль «heapq» с процедурками, которые делают из обычного листа очередь с приоритетом: https://docs.python.org/3.8/library/heapq.html. Всё просто, понятно, удобно и без этих ваших «классов» с «наследованиями». Именно поэтому я за «Python».
gost 26.11.2019 02:40 # 0
guest8 26.11.2019 02:42 # −999
bootcamp_dropout 26.11.2019 02:51 # 0
guest8 26.11.2019 02:53 # −999
bootcamp_dropout 26.11.2019 02:53 # +3
gost 26.11.2019 02:55 # 0
guest8 26.11.2019 02:57 # −999
bormand 26.11.2019 05:45 # +2
3.14159265 29.11.2019 03:01 # 0
Во-первых, кто сказал что «классы» и «наследования» это хорошо?
Во-вторых, Цари пишут несколько разных версий сортировки, попутно штудируя Кнута, после чего выбирают оптимальный алгоритм в райтайме.
А заедушные петушки только и могут что использовать тормозную, глючную и неспециализированную реализацию сортировки из гвидовского питуха.
guest8 29.11.2019 03:27 # −999
guest8 26.11.2019 03:10 # −999
3.14159265 29.11.2019 03:02 # 0
Desktop 26.11.2019 03:14 # 0
Desktop 26.11.2019 03:15 # +1
Elvenfighter 26.11.2019 18:28 # 0
Konardinho 26.11.2019 23:02 # 0
XYPO3BO3 26.11.2019 23:39 # 0
https://www.php.net/manual/ru/class.ds-priorityqueue.php
Для 5.х функции heappush и heappop придётся самому описать.
3.14159265 29.11.2019 02:57 # 0
>>> data.sort()
Пхаха.
А я однажды написал сортировку в ноль строк, поставив у ListBoxa свойство Sorted=True
guest8 29.11.2019 03:17 # −999
3.14159265 29.11.2019 03:23 # 0
guest8 29.11.2019 03:26 # −999
3.14159265 29.11.2019 03:27 # 0
guest8 29.11.2019 03:29 # −999
3.14159265 29.11.2019 03:36 # +1
while здесь фактически выполняет роль ifa.
И нужен для совместимости с доквантовым барахлом, которое не может в сортировку с оракулом.
3.14159265 29.11.2019 03:17 # +1
Но я не поверил, что там без классов с методами написали, пошёл глянуть что там внутри:
Дейстивтельно какое-то уебанство. Обернули какими-то extension-говнометодами готовый класс.
3.14159265 29.11.2019 03:26 # 0
>что там внутри
Блин, от этих ехал heap через heap у меня самого тавтологии начались.
gost 30.11.2019 12:12 # 0
Antifriz_otrabotanyi 30.11.2019 14:08 # 0
guestinxo 30.11.2019 14:21 # 0
3.14159265 02.12.2019 02:12 # +1
> heappop(heap)
DRY.
Да тут прикол в том что само по себе наследование — говно.
Отнаследовали логику heapa от листа — жестко привязали себя к родительскому классу.
Захотели сделать очередь на другой реализации листа — извольте копировать код.
Не знаю есть ли в питоне какие-то mixinы, extension-методы (https://www.dotnetperls.com/extension) или интерфейсы с впиленными методами (https://www.geeksforgeeks.org/default-methods-java/).
Это бы помогло.
Konardinho 05.12.2019 02:01 # 0
inseminator 25.08.2021 21:02 # 0