def bubble_sort(array): """ Implémentation du tri à bulles pour un tableau 1D. """ n = len(array) for i in range(n): for j in range(0, n - i - 1): if array[j] > array[j + 1]: array[j], array[j + 1] = array[j + 1], array[j] def bubble_sort_by_key(array, key_func): """ Implémentation du tri à bulles pour un tableau 2D ou supérieur basé sur une fonction clé. """ n = len(array) for i in range(n): for j in range(0, n - i - 1): if key_func(array[j]) > key_func(array[j + 1]): array[j], array[j + 1] = array[j + 1], array[j] def sort_nd_array(array): """ Trie récursivement un tableau multidimensionnel. """ if isinstance(array[0], list): # Trier récursivement chaque sous-dimension for sub_array in array: sort_nd_array(sub_array) # Trier cette dimension en fonction de la somme des sous-tableaux bubble_sort_by_key(array, key_func=lambda x: sum(sum(y) if isinstance(y, list) else y for y in x)) else: # Si c'est un tableau 1D, appliquer le tri à bulles bubble_sort(array) # Exemple pour un tableau 2D array_2d = [[0, 3, 2], [9, 4, 5], [4, 1, 3]] sort_nd_array(array_2d) print("Tableau trié 2D :", array_2d) # Résultat attendu : [[0, 2, 3], [1, 3, 4], [4, 5, 9]] # Exemple pour un tableau 3D array_3d = [[[3, 2], [1, 4]], [[9, 8], [2, 1]], [[5, 5], [3, 3]]] sort_nd_array(array_3d) print("Tableau trié 3D :", array_3d)