Add partition fonction

This commit is contained in:
2025-02-11 08:21:21 +01:00
parent 97a7c0795d
commit c6eba3991a
2 changed files with 36 additions and 21 deletions

View File

@@ -20,10 +20,10 @@ def ajouter(liste,element):
def tete(liste):
assert not(est_vide(liste)), "Liste vide"
element, reste = liste
element, _ = liste
return element
def queue(liste):
assert not(est_vide(liste)), "Liste vide"
element,reste = liste
return reste
_,reste = liste
return reste

View File

@@ -10,19 +10,35 @@ Created on Mon Feb 10 09:15:57 2025
import liste as fifo
def renverser(liste):
result = fifo.creer_liste()
while not fifo.est_vide(liste):
result = fifo.ajouter(result, fifo.tete(liste))
liste = fifo.queue(liste)
return result
def partition(liste, debut, fin):
liste1 = liste
liste2 = liste
if fifo.est_vide(liste):
return (fifo.creer_liste(), fifo.creer_liste())
else:
left_liste = fifo.creer_liste()
for _ in range(int((debut + fin )/2)):
liste1 = fifo.tete(liste1)
for _ in range(debut,fin):
left_liste = fifo.ajouter(left_liste, fifo.queue(liste2))
return liste1, left_liste
return fifo.creer_liste(), fifo.creer_liste()
current = liste
for _ in range(debut):
if fifo.est_vide(current):
break
current = fifo.queue(current)
segment_inversé = fifo.creer_liste()
for _ in range(fin - debut):
if fifo.est_vide(current):
break
segment_inversé = fifo.ajouter(segment_inversé, fifo.tete(current))
current = fifo.queue(current)
segment = renverser(segment_inversé)
return current, segment
def fusion(tab, debut, milieu, fin):
gauche = tab[debut:milieu + 1]
@@ -55,14 +71,13 @@ def tri_fusion_partition(tab, debut, fin):
tri_fusion_partition(tab, pivot_index + 1, fin)
fusion(tab, debut, pivot_index, fin)
liste = fifo.creer_liste()
for i in range(10):
liste = (liste, i)
print(liste)
liste = fifo.queue(liste)
print(liste)
liste_test = fifo.creer_liste()
for i in range(1,10):
liste_test = fifo.ajouter(liste_test,i)
print(liste_test)
test = partition(liste_test,1,9)
print(test)