formatte file

This commit is contained in:
2025-04-01 14:28:43 +02:00
parent f2ae2cbc13
commit e03e5458aa
77 changed files with 1231 additions and 945 deletions

View File

@@ -8,9 +8,10 @@ def partition(tab, debut, fin):
tab[i + 1], tab[fin] = tab[fin], tab[i + 1]
return i + 1
def fusion(tab, debut, milieu, fin):
gauche = tab[debut:milieu + 1]
droite = tab[milieu + 1:fin + 1]
gauche = tab[debut : milieu + 1]
droite = tab[milieu + 1 : fin + 1]
i, j, k = 0, 0, debut
while i < len(gauche) and j < len(droite):
@@ -32,6 +33,7 @@ def fusion(tab, debut, milieu, fin):
j += 1
k += 1
def tri_fusion_partition(tab, debut, fin):
if debut < fin:
pivot_index = partition(tab, debut, fin)
@@ -39,7 +41,7 @@ def tri_fusion_partition(tab, debut, fin):
tri_fusion_partition(tab, pivot_index + 1, fin)
fusion(tab, debut, pivot_index, fin)
tableau = [34, 7, 23, 32, 5, 62, 32, 8, 9]
tri_fusion_partition(tableau, 0, len(tableau) - 1)
print("Tableau trié :", tableau)

View File

@@ -1,28 +1,31 @@
from random import shuffle
i = 0
def fusion(liste_1,liste_2):
def fusion(liste_1, liste_2):
global i
if len(liste_1) == 0:
return liste_2
if len(liste_2) == 0:
return liste_1
if liste_1[0] <= liste_2[0]:
i+=1
return [liste_1[0]] + fusion(liste_1[1:],liste_2)
i+=1
return [liste_2[0]] + fusion(liste_1,liste_2[1:])
i += 1
return [liste_1[0]] + fusion(liste_1[1:], liste_2)
i += 1
return [liste_2[0]] + fusion(liste_1, liste_2[1:])
def tri_pf(liste):
global i
if len(liste)<=1:
if len(liste) <= 1:
return liste
i+=1
millieu = len(liste)//2
i += 1
millieu = len(liste) // 2
return fusion(tri_pf(liste[:millieu]), tri_pf(liste[millieu:]))
test = [23,8,20,10,13,1]
print(test,i)
test = [23, 8, 20, 10, 13, 1]
print(test, i)
test = tri_pf(test)
print(test, i )
print(test, i)

View File

@@ -7,23 +7,25 @@ Created on Mon Feb 10 09:15:57 2025
"""
def creer_liste():
return ()
def est_vide(liste):
return len(liste) == 0
def ajouter(liste,element):
return (element,liste)
def ajouter(liste, element):
return (element, liste)
def tete(liste):
assert not(est_vide(liste)), "Liste vide"
assert not (est_vide(liste)), "Liste vide"
element, _ = liste
return element
def queue(liste):
assert not(est_vide(liste)), "Liste vide"
_,reste = liste
assert not (est_vide(liste)), "Liste vide"
_, reste = liste
return reste

View File

@@ -12,16 +12,16 @@ import liste as fifo
def taille(liste):
a = 0
while not(fifo.est_vide(liste)):
while not (fifo.est_vide(liste)):
liste = fifo.queue(liste)
a+=1
a += 1
return a
def divise2(liste):
n = taille(liste)
droite, gauche = partition(liste,0,n//2)
return droite,gauche
droite, gauche = partition(liste, 0, n // 2)
return droite, gauche
def renverser(liste):
@@ -41,30 +41,29 @@ def partition(liste, debut, fin):
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(gauche,droite):
def fusion(gauche, droite):
if fifo.est_vide(gauche):
return droite
if fifo.est_vide(droite):
return gauche
if fifo.tete(gauche)<=fifo.tete(droite):
return fifo.ajouter(fusion(fifo.queue(gauche),droite),fifo.tete(gauche))
if fifo.tete(gauche) <= fifo.tete(droite):
return fifo.ajouter(fusion(fifo.queue(gauche), droite), fifo.tete(gauche))
else:
return fifo.ajouter(fusion(gauche,fifo.queue(droite)),fifo.tete(droite))
return fifo.ajouter(fusion(gauche, fifo.queue(droite)), fifo.tete(droite))
def merge_sort(liste):
@@ -72,19 +71,19 @@ def merge_sort(liste):
if fifo.est_vide(liste):
return liste
elif fifo.est_vide(fifo.queue(liste)):
return liste # si elle ne contient que un elt
return liste # si elle ne contient que un elt
gauche, droite = divise2(liste)
tri1 = merge_sort(gauche) # recursif
tri2 = merge_sort(droite) # recursif
tri1 = merge_sort(gauche) # recursif
tri2 = merge_sort(droite) # recursif
return fusion(tri1, tri2)
return fusion(tri1,tri2)
if __name__ == "__main__":
liste = fifo.creer_liste()
for i in reversed(range(100)):
liste = fifo.ajouter(liste,i)
liste = fifo.ajouter(liste, i)
print(liste)
print("Après avoir trié la liste:")