Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
fae475ab96 | |||
52f4238326 |
64
Ex3_Trie_Tableau_Double.py
Normal file
64
Ex3_Trie_Tableau_Double.py
Normal file
@@ -0,0 +1,64 @@
|
||||
|
||||
def Trie_Tableau_Double(tab) : # complexitée O(n(m²+n))
|
||||
sorted_dico = {}
|
||||
|
||||
print(tab[0])
|
||||
|
||||
# n^(m+m*((m(m+1))/2))+n((m(m+1))/2)
|
||||
|
||||
for sub_tab in tab : # n
|
||||
val = 0
|
||||
sub_tab2 = []
|
||||
for elt in sub_tab : # m
|
||||
val += elt
|
||||
|
||||
for i in range(len(sub_tab)): # m
|
||||
if i == 0 :
|
||||
sub_tab2.append(sub_tab[i])
|
||||
else :
|
||||
for j in range(len(sub_tab2)+1): # (m(m+1))/2
|
||||
if j >= len(sub_tab2):
|
||||
sub_tab2.append(sub_tab[i])
|
||||
else :
|
||||
if sub_tab[i] <= sub_tab2[j] :
|
||||
sub_tab2.insert(j,sub_tab[i])
|
||||
break
|
||||
|
||||
sorted_dico[val] = sub_tab2
|
||||
|
||||
tab = []
|
||||
index_tab = []
|
||||
|
||||
# n*(m(m+1))/2
|
||||
|
||||
for clef,valeur in sorted_dico.items() : # n
|
||||
if index_tab == [] :
|
||||
tab.append(valeur)
|
||||
index_tab.append(clef)
|
||||
else :
|
||||
for j in range(len(index_tab)+1): # (m(m+1))/2
|
||||
if j >= len(index_tab):
|
||||
tab.append(valeur)
|
||||
index_tab.append(clef)
|
||||
else :
|
||||
if clef <= index_tab[j] :
|
||||
tab.insert(j,valeur)
|
||||
index_tab.insert(j,clef)
|
||||
break
|
||||
|
||||
return tab
|
||||
|
||||
|
||||
def Trie_Tableau_Double_bySort(tab) : # complexitée O(n*m * log(m))
|
||||
|
||||
tab.sort() # n log(n)
|
||||
|
||||
for sub_tab in tab : # n
|
||||
sub_tab.sort() # m log(m)
|
||||
|
||||
return tab
|
||||
|
||||
|
||||
Tableau_test = [[0,3,2], [9,4,5], [4,1,3]]
|
||||
|
||||
print(Trie_Tableau_Double(Tableau_test))
|
105
README.md
Normal file
105
README.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# TD4 - DEV5.1 Qualité algorithmique
|
||||
Complexité algorithmique
|
||||
|
||||
## Ex 2 - Calculs de complexité de fonctions
|
||||
Calculez la complexité des fonctions suivantes :
|
||||
|
||||

|
||||
|
||||
Ici on prend un tableau 1 contenant **n** valeurs et un tableau 2 contenant **m** valeurs.
|
||||
|
||||
On parcour entièrement les deux pour savoir si une valeur ce trouve dans l'autre tableau.
|
||||
|
||||
On a donc :
|
||||
> O ( n x m )
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
Ici on prend un une variable x de valeur **n**.
|
||||
|
||||
Tant que x est positif, on le décrémente pour arriver a 0
|
||||
|
||||
On a donc :
|
||||
> O ( n ) ou O ( x )
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
Cette fonction n'a pas de boucle donc elle ne ce répète pas.
|
||||
|
||||
On a donc :
|
||||
> O ( 1 )
|
||||
|
||||
## Ex 3 - Algorithme de tri
|
||||
- Créer un algorithme pour trier un tableau à N dimensions de M valeurs
|
||||
- Chaque dimension doit être trié par ordre croissant de la somme des valeurs de la
|
||||
dimension inférieur
|
||||
- Exemple pour un tableau à 2 dimensions de 3 valeurs
|
||||
[ [0,3,2], [9,4,5], [4,1,3] ] → [ [0,2,3], [1,3,4], [4,5,9] ]
|
||||
- Calculer la complexité algorithmique de l’algorithme écrit
|
||||
* la complecitée de ce programme est de O(n(m²+n))
|
||||
```python
|
||||
def Trie_Tableau_Double(tab) : # complexitée O(n(m²+n))
|
||||
sorted_dico = {}
|
||||
|
||||
print(tab[0])
|
||||
|
||||
# n^(m+m*((m(m+1))/2))+n((m(m+1))/2)
|
||||
|
||||
for sub_tab in tab : # n
|
||||
val = 0
|
||||
sub_tab2 = []
|
||||
for elt in sub_tab : # m
|
||||
val += elt
|
||||
|
||||
for i in range(len(sub_tab)): # m
|
||||
if i == 0 :
|
||||
sub_tab2.append(sub_tab[i])
|
||||
else :
|
||||
for j in range(len(sub_tab2)+1): # (m(m+1))/2
|
||||
if j >= len(sub_tab2):
|
||||
sub_tab2.append(sub_tab[i])
|
||||
else :
|
||||
if sub_tab[i] <= sub_tab2[j] :
|
||||
sub_tab2.insert(j,sub_tab[i])
|
||||
break
|
||||
|
||||
sorted_dico[val] = sub_tab2
|
||||
|
||||
tab = []
|
||||
index_tab = []
|
||||
|
||||
# n*(m(m+1))/2
|
||||
|
||||
for clef,valeur in sorted_dico.items() : # n
|
||||
if index_tab == [] :
|
||||
tab.append(valeur)
|
||||
index_tab.append(clef)
|
||||
else :
|
||||
for j in range(len(index_tab)+1): # (m(m+1))/2
|
||||
if j >= len(index_tab):
|
||||
tab.append(valeur)
|
||||
index_tab.append(clef)
|
||||
else :
|
||||
if clef <= index_tab[j] :
|
||||
tab.insert(j,valeur)
|
||||
index_tab.insert(j,clef)
|
||||
break
|
||||
|
||||
return tab
|
||||
```
|
||||
|
||||
* la complecitée de ce programme est de O(n*m * log(m))
|
||||
```python
|
||||
def Trie_Tableau_Double_bySort(tab) : # complexitée O(n*m * log(m))
|
||||
|
||||
tab.sort() # n log(n)
|
||||
|
||||
for sub_tab in tab : # n
|
||||
sub_tab.sort() # m log(m)
|
||||
|
||||
return tab
|
||||
```
|
BIN
image/function_1.png
Normal file
BIN
image/function_1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 43 KiB |
BIN
image/function_2.png
Normal file
BIN
image/function_2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
BIN
image/function_3.png
Normal file
BIN
image/function_3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
Reference in New Issue
Block a user