mirror of
https://github.com/Fare-spec/cours.git
synced 2025-12-07 10:50:36 +00:00
Auto urgent commit.
This commit is contained in:
@@ -177,21 +177,79 @@ def ajouter(tas, element):
|
|||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# nlog(n)
|
# nlog(n)
|
||||||
class Tas_Max(object):
|
class Tas_Max(object):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def parent(i):
|
def parent(i):
|
||||||
return (i-1)//2
|
return (i - 1) // 2
|
||||||
@staticmethod
|
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def enfant_gauche(i):
|
def enfant_gauche(i):
|
||||||
return 2*i+1
|
return 2 * i + 1
|
||||||
@staticmethod
|
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def enfant_droite(i):
|
def enfant_droite(i):
|
||||||
return 2*i+2
|
return 2 * i + 2
|
||||||
# exercice 6:1. Proposer une méthode d’extraction de la racine.
|
|
||||||
def extract_racine(tas):
|
def __init__(self) -> None:
|
||||||
racine = tas.pop()
|
self.elements = list()
|
||||||
|
self.taille = 0
|
||||||
|
|
||||||
|
def existe_enfant_gauche(self, i):
|
||||||
|
return 2 * i + 1 < self.taille
|
||||||
|
|
||||||
|
def existe_enfant_droit(self, i):
|
||||||
|
return 2 * i + 2 < self.taille
|
||||||
|
|
||||||
|
def tamiser(self, racine):
|
||||||
|
while racine > 0 and self.elements[racine] > self.elements[parent(raicne)]:
|
||||||
|
self.elements[racine], self.element[parent(racine)] = (
|
||||||
|
self.elements[parent(racine)],
|
||||||
|
self.elements[racine],
|
||||||
|
)
|
||||||
|
|
||||||
|
def ratisser(self, racine):
|
||||||
|
courant = racine
|
||||||
|
if (
|
||||||
|
self.existe_enfant_gauche(racine)
|
||||||
|
and self.elements[enfant_gauche(racine)] > self.element[racine]
|
||||||
|
):
|
||||||
|
courant = enfant_gauche(racine)
|
||||||
|
if (
|
||||||
|
self.existe_enfant_droit(racine)
|
||||||
|
and self.elements[enfant_droit(racine)] > self.elements[courant]
|
||||||
|
):
|
||||||
|
courant = enfant_droit(racine)
|
||||||
|
if courant != racine:
|
||||||
|
self.elements[racine], self.elements[courant] = (
|
||||||
|
self.elements[courant],
|
||||||
|
self.elements[racine],
|
||||||
|
)
|
||||||
|
|
||||||
|
def ajouter(self, element):
|
||||||
|
self.elements.append(element)
|
||||||
|
self.taille += 1
|
||||||
|
self.tamiser(self.taille)
|
||||||
|
|
||||||
|
def extraire_racine(self):
|
||||||
|
if self.taille == 0:
|
||||||
|
return None
|
||||||
|
racine = self.elements[0]
|
||||||
|
if self.taille > 0:
|
||||||
|
self.elements[0] = self.elements.pop()
|
||||||
|
self.ratisser(0)
|
||||||
|
else:
|
||||||
|
self.elements.pop()
|
||||||
|
return racine
|
||||||
|
|
||||||
|
|
||||||
|
def liste_vers_tas_max(liste):
|
||||||
|
tas = Tas_Max()
|
||||||
|
for i in liste:
|
||||||
|
tas.ajouter(i)
|
||||||
|
return tas
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
l1 = [1, 2, 3, 8, 7, 6, 5, 4]
|
||||||
|
tas = liste_vers_tas_max(l1)
|
||||||
|
|||||||
Reference in New Issue
Block a user