mirror of
https://github.com/Fare-spec/cours.git
synced 2025-12-08 03:00:37 +00:00
Add partition fonction
This commit is contained in:
@@ -20,10 +20,10 @@ def ajouter(liste,element):
|
|||||||
|
|
||||||
def tete(liste):
|
def tete(liste):
|
||||||
assert not(est_vide(liste)), "Liste vide"
|
assert not(est_vide(liste)), "Liste vide"
|
||||||
element, reste = liste
|
element, _ = liste
|
||||||
return element
|
return element
|
||||||
|
|
||||||
def queue(liste):
|
def queue(liste):
|
||||||
assert not(est_vide(liste)), "Liste vide"
|
assert not(est_vide(liste)), "Liste vide"
|
||||||
element,reste = liste
|
_,reste = liste
|
||||||
return reste
|
return reste
|
||||||
|
|||||||
@@ -10,19 +10,35 @@ Created on Mon Feb 10 09:15:57 2025
|
|||||||
import liste as fifo
|
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):
|
def partition(liste, debut, fin):
|
||||||
liste1 = liste
|
|
||||||
liste2 = liste
|
|
||||||
if fifo.est_vide(liste):
|
if fifo.est_vide(liste):
|
||||||
return (fifo.creer_liste(), fifo.creer_liste())
|
return fifo.creer_liste(), fifo.creer_liste()
|
||||||
else:
|
|
||||||
left_liste = fifo.creer_liste()
|
current = liste
|
||||||
for _ in range(int((debut + fin )/2)):
|
for _ in range(debut):
|
||||||
liste1 = fifo.tete(liste1)
|
if fifo.est_vide(current):
|
||||||
for _ in range(debut,fin):
|
break
|
||||||
left_liste = fifo.ajouter(left_liste, fifo.queue(liste2))
|
current = fifo.queue(current)
|
||||||
return liste1, left_liste
|
|
||||||
|
|
||||||
|
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):
|
def fusion(tab, debut, milieu, fin):
|
||||||
gauche = tab[debut:milieu + 1]
|
gauche = tab[debut:milieu + 1]
|
||||||
@@ -55,14 +71,13 @@ def tri_fusion_partition(tab, debut, fin):
|
|||||||
tri_fusion_partition(tab, pivot_index + 1, fin)
|
tri_fusion_partition(tab, pivot_index + 1, fin)
|
||||||
fusion(tab, debut, pivot_index, 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)
|
||||||
|
|||||||
Reference in New Issue
Block a user