From e370d80dc71fd7bb91b8f19e19a3b8f7aa7e061f Mon Sep 17 00:00:00 2001 From: TheSinay Date: Tue, 26 Nov 2024 11:44:26 +0100 Subject: [PATCH] fini --- TD Yanis Darius.pdf | Bin 0 -> 31838 bytes ex3_TD4_V2.py | 121 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 TD Yanis Darius.pdf create mode 100644 ex3_TD4_V2.py diff --git a/TD Yanis Darius.pdf b/TD Yanis Darius.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fb780458e7d2b0b96b7f0ea8602720d9b6d46099 GIT binary patch literal 31838 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 array[largest]: + largest = left + + if right < n and array[right] > array[largest]: + largest = right + + if largest != i: + array[i], array[largest] = array[largest], array[i] + heapify(array, n, largest) + +def heap_sort(array): + n = len(array) + + # Construire un tas max + for i in range(n // 2 - 1, -1, -1): + heapify(array, n, i) + + + for i in range(n - 1, 0, -1): + array[i], array[0] = array[0], array[i] + heapify(array, i, 0) + + return array + +def total_sum(array): + if isinstance(array[0], int): + return sum(array) + return sum(total_sum(subarray) for subarray in array) # Si tableau multidimensionnel + + +def sort_with_sum(array): + for i in range(1, len(array)): + key = array[i] + key_sum = total_sum(key) + j = i - 1 + # Réorganise les sous-tableaux en fonction de leur somme + while j >= 0 and total_sum(array[j]) > key_sum: + array[j + 1] = array[j] + j -= 1 + array[j + 1] = key + + return array + + + +def sort_nd_array(array): + # Si le tableau est de dimension 1, tri simple par insertion + if isinstance(array[0], int): + return heap_sort(array) + + # Si le tableau est multidimensionnel, on trie récursivement les sous-tableaux + sorted_subarrays = [sort_nd_array(subarray) for subarray in array] + + sorted_subarrays = sort_with_sum(sorted_subarrays) + + return sorted_subarrays + + +def print_nd_array(array, level=0): + """ + Affiche un tableau N-dimensionnel de manière lisible. + """ + if isinstance(array[0], int): # Si tableau 1D + print(" " * level + str(array)) + else: # Tableau multidimensionnel + print(" " * level + "[") + for subarray in array: + print_nd_array(subarray, level + 1) + print(" " * level + "]") + + +def main(): + # Exemple 1 : Tableau 2D + array_2d = [[0, 3, 2], [9, 4, 5], [4, 1, 3]] + print("Tableau 2D avant tri :") + print_nd_array(array_2d) + result_2d = sort_nd_array(array_2d) + print("Tableau 2D après tri :") + print_nd_array(result_2d) + + # Exemple 2 : Tableau 3D + array_3d = [ + [[3, 1], [4, 2], [1, 3]], + [[5, 7], [2, 8], [9, 4]], + [[0, 0], [1, 1], [1, 0]] + ] + print("\nTableau 3D avant tri :") + print_nd_array(array_3d) + result_3d = sort_nd_array(array_3d) + print("Tableau 3D après tri :") + print_nd_array(result_3d) + + # Exemple 3 : Tableau 4D + array_4d = [ + [ + [[1, 3], [4, 5], [2, 2]], + [[7, 8], [5, 6], [3, 4]] + ], + [ + [[9, 1], [6, 7], [8, 3]], + [[2, 5], [7, 3], [9, 9]] + ], + [ + [[3, 3], [2, 1], [5, 6]], + [[4, 2], [8, 7], [3, 9]] + ] + ] + print("\nTableau 4D avant tri :") + print_nd_array(array_4d) + result_4d = sort_nd_array(array_4d) + print("Tableau 4D après tri :") + print_nd_array(result_4d) + +if __name__ == "__main__": + main()