π§ ΠΠ°ΠΊ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python: ΠΈΠ΄Π΅ΠΈ ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ
ΠΠ°ΠΊ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python?
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΊΠ»Π° ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
# ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΡΠΎΡΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ
Π²ΡΡΠΎΡΠ° = int(input("ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π²ΡΡΠΎΡΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ: "))
# ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ
for i in range(Π²ΡΡΠΎΡΠ°):
print(" " * (Π²ΡΡΠΎΡΠ° - i - 1) + "*" * (2 * i + 1))
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π²ΡΡΠΎΡΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠΊΠ» Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΡΡΠΎΠΊ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ², ΡΡΠΎΠ±Ρ ΡΠ΄Π²ΠΈΠ½ΡΡΡ Π·Π²Π΅Π·Π΄ΠΎΡΠΊΠΈ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π½ΡΠΆΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π²Π΅Π·Π΄ΠΎΡΠ΅ΠΊ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²ΠΎΠ΄ΠΈΡ Π²ΡΡΠΎΡΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ ΡΠ°Π²Π½ΠΎΠΉ 5, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
* *** ***** ******* *********
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΌΠΎΠ³ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python. Π£Π΄Π°ΡΠΈ Π² ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ!
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ Π² Python?
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΠΏΠΎΡΠΎΠΌΠΊΠ°, ΠΊΡΠΎΠΌΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, Π³Π΄Π΅ ΠΌΠΎΠ³ΡΡ Π½Π΅ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ:
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ Π² Python ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
pyramid = [1, 2, 3, 4, 5, 6]
ΠΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ Ρ 6 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠΏΠΈΡΠΊΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ 0.
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ:
Π’Π΅ΠΏΠ΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ ΡΠΏΠΈΡΠΊΠ°, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΡΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΎΡ Π²Π΅ΡΡΠΈΠ½Ρ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ ΠΊ Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΡΡΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ.
def build_pyramid(pyramid):
n = len(pyramid)
for i in range(n // 2, -1, -1):
heapify(pyramid, n, i)
def heapify(pyramid, n, i):
largest = i
left = 2 * i + 1
right = 2 * i + 2
if left < n and pyramid[i] < pyramid[left]:
largest = left
if right < n and pyramid[largest] < pyramid[right]:
largest = right
if largest != i:
pyramid[i], pyramid[largest] = pyramid[largest], pyramid[i]
heapify(pyramid, n, largest)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ build_pyramid
ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ heapify
ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΡΠΏΠΈΡΠΊΠ°.
Π€ΡΠ½ΠΊΡΠΈΡ heapify
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ·Π»Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ, ΠΈ Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΡΠΎ ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΡ
ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠΎ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ.
ΠΡΠΈΠΌΠ΅Ρ:
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ build_pyramid
ΠΈ Π²ΡΠ²ΠΎΠ΄ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ Π½Π° ΡΠΊΡΠ°Π½:
pyramid = [1, 5, 3, 2, 4, 6]
build_pyramid(pyramid)
print(pyramid)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
[6, 5, 3, 2, 4, 1]
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΠΏΠΈΡΠΊΠ°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ Π² Python ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΡΠΌ Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²ΡΡ
ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ², ΠΊΡΠΎΠΌΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ build_pyramid
ΠΈ heapify
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΏΠΎΠΌΠΎΠ³ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ Π² Python. Π£Π΄Π°ΡΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ!