forked from menault/TD4_DEV51_Qualite_Algo
60 lines
1.6 KiB
Python
60 lines
1.6 KiB
Python
#Trie les éléments dans un tableau
|
|
def trie_bulle(arr):
|
|
n = len(arr)
|
|
for i in range(n):
|
|
for j in range(0, n - i - 1):
|
|
if arr[j] > arr[j + 1]:
|
|
arr[j], arr[j + 1] = arr[j + 1], arr[j] # Échange les éléments
|
|
|
|
# Trie les tableau en fonction de la somme de leurs éléments
|
|
def trie_bulle_somme(array):
|
|
n = len(array)
|
|
for i in range(n):
|
|
for j in range(0, n - i - 1):
|
|
if sum(detache_tab(array[j])) > sum(detache_tab(array[j + 1])):
|
|
array[j], array[j + 1] = array[j + 1], array[j] # Échange les sous-tableaux
|
|
|
|
# Détache les tableaux entre eux
|
|
def detache_tab(array):
|
|
if isinstance(array, int): # Si val unique
|
|
return [array]
|
|
else:
|
|
return [value for subarray in array for value in detache_tab(subarray)]
|
|
|
|
def trie_tab(array):
|
|
if isinstance(array[0], int): # Si c'est un tableau 1D
|
|
trie_bulle(array) # Trie le tableau 1D
|
|
return array
|
|
else: # Si multu dimension
|
|
for i in range(len(array)):
|
|
array[i] = trie_tab(array[i]) # Trie chaque sous-tableau
|
|
# Trie les sous-tableaux par somme des valeur
|
|
trie_bulle_somme(array)
|
|
return array
|
|
|
|
|
|
array = [[0, 3, 2], [9, 4, 5], [4, 1, 3]]
|
|
result = trie_tab(array)
|
|
print(result)
|
|
|
|
array_4d = [
|
|
[
|
|
[
|
|
[1, 3, 2], [4, 6, 5]
|
|
],
|
|
[
|
|
[7, 1, 9], [2, 1, 3]
|
|
]
|
|
],
|
|
[
|
|
[
|
|
[3, 4, 1], [5, 2, 6]
|
|
],
|
|
[
|
|
[9, 6, 8], [3, 1, 2]
|
|
]
|
|
]
|
|
]
|
|
|
|
result2 = trie_tab(array_4d)
|
|
print(result2) |