ajout du tp 4
This commit is contained in:
parent
41d04dd86c
commit
fdd6e84579
54
README.md
Normal file
54
README.md
Normal file
@ -0,0 +1,54 @@
|
||||
# TD 4 Berger Lucas
|
||||
|
||||
## Exercice 2 :
|
||||
|
||||
### Programme 1 :
|
||||
|
||||
Dans le pire des cas l'algorithme 1 aura une complexité algorithmique de O(n.m) avec n et m respectivement pour le tableau 1 et le tableau 2.
|
||||
|
||||
Dans le meilleur des cas l'algorithme 1 aura une complexité algorithmique de O(n) avec n pour le tableau 1.
|
||||
|
||||
### Programme 2 :
|
||||
|
||||
La complexité algorithmique de la fonction 2 est O(n), où n est la valeur initiale de x.
|
||||
|
||||
### Programme 3 :
|
||||
|
||||
La complexité de la fonction 3 est O(1) car elle effectue un nombre constant d'opérations, et ce indépendamment de la valeur de x.
|
||||
|
||||
## Exercice 3 :
|
||||
|
||||
La complexité totale de `sort_students` est donnée par l'appel à `bubblesort` et à la fonction `find_rank_student`, qui ont toutes deux une complexité égale au nombre d'étudiants au carré (donc O(student_number²)), et ce, pour chaque itération de la boucle extérieure (grade_number est également une valeur décisive).
|
||||
|
||||
La complexité est donc égale à O(grade_number\*student_number²) ou O(n*m²).
|
||||
|
||||
|
||||
Exercice 4 :
|
||||
|
||||
VOIR algo.py CI-JOINT EXPLICATIONS CI-DESSOUS
|
||||
|
||||
Fonctionnement du programme :
|
||||
|
||||
### Calcul des sommes des lignes :
|
||||
|
||||
Pour chaque ligne, nous calculons la somme de ses éléments, ce qui prend \(O(m)\) pour chaque ligne.
|
||||
Donc, pour \(n\) lignes, la complexité de cette étape est \(O(n \* m)\).
|
||||
|
||||
### Tri par sélection :
|
||||
|
||||
L'algorithme de tri par sélection nécessite de comparer chaque élément avec tous les éléments suivants, ce qui donne une complexité de \(O(n²)\) pour trier \(n\) éléments.
|
||||
|
||||
### Conclusion sur la complexité :
|
||||
|
||||
La complexité totale est la somme des étapes :
|
||||
- Calcul des sommes : \(O(n \* m)\)
|
||||
- Tri par sélection : \(O(n²)\)
|
||||
|
||||
La complexité totale est donc :
|
||||
|
||||
|
||||
O(n \* m + n²)
|
||||
|
||||
|
||||
Donc, la complexité dépend à la fois du nombre de lignes \(n\), du nombre d'éléments par ligne \(m\), et du tri effectué dessus.
|
||||
|
18
algo.py
Normal file
18
algo.py
Normal file
@ -0,0 +1,18 @@
|
||||
def trier_par_somme(tableau):
|
||||
sommes = [(i, sum(tableau[i])) for i in range(len(tableau))]
|
||||
|
||||
# Tri par sélection basé sur la somme des lignes
|
||||
for i in range(len(sommes)):
|
||||
min_index = i
|
||||
for j in range(i + 1, len(sommes)):
|
||||
if sommes[j][1] < sommes[min_index][1]:
|
||||
min_index = j
|
||||
sommes[i], sommes[min_index] = sommes[min_index], sommes[i]
|
||||
tableau[i], tableau[min_index] = tableau[min_index], tableau[i]
|
||||
|
||||
return tableau
|
||||
|
||||
# Exemple d'utilisation je ne suis pas sur pour l'algo
|
||||
tableau = [[0, 3, 2], [9, 4, 5], [4, 1, 3]]
|
||||
resultat = trier_par_somme(tableau)
|
||||
print(resultat)
|
Loading…
Reference in New Issue
Block a user