TD4_DEV51_landrin/algo_tri.py

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)