From f043990d5c654e186e261f3094a8101ffe353dd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFs=20L?= <36632834+LifestreamVII@users.noreply.github.com> Date: Mon, 27 Nov 2023 01:26:08 +0100 Subject: [PATCH] Add files via upload --- README.md | 90 +++++++++++++++++++++++++++++++++++++++------- __main__.py | 8 +++-- img/g1.png | Bin 0 -> 21786 bytes img/g2.png | Bin 0 -> 23780 bytes img/g3.png | Bin 0 -> 24702 bytes img/g4.png | Bin 0 -> 30749 bytes sort/count.py | 9 +++++ sort/fusion.py | 42 +++++++++++++++++++++- sort/graph.py | 24 +++++++++++++ sort/insertion.py | 25 +++++++++++++ sort/range.py | 7 +++- sort/recursion.py | 3 +- sort/selection.py | 30 ++++++++++++++++ 13 files changed, 221 insertions(+), 17 deletions(-) create mode 100644 img/g1.png create mode 100644 img/g2.png create mode 100644 img/g3.png create mode 100644 img/g4.png create mode 100644 sort/count.py create mode 100644 sort/graph.py diff --git a/README.md b/README.md index 74f925a..acafc04 100644 --- a/README.md +++ b/README.md @@ -48,16 +48,24 @@ Complétez la fonction `generate_array_of_number` du fichier `sort/range.py` pou Mesurez combien de temps prend python à générer un tableau composés de : - 1 000 000 entrées += Temps écoulé : 0.5889501571655273 - 2 000 000 entrées += Temps écoulé : 1.1459660530090332 - 3 000 000 entrées += Temps écoulé : 1.7308893203735352 - ... - 10 000 000 entrées += Temps écoulé : 5.838363170623779 + + **Astuce** : vous pouvez écrire les nombres avec des underscores pour mieux les lire : `1_000_000` Sur un tableur, générez un tableau permettant de visualiser le temps d'éxécution en fonction de la taille de l'entrée. -Comment vous semble évoluer la courbe ? Observez bien les différentes courbes du graphique ci-dessous. Quelle est la plus ressemblante à notre situation ? *Écrivez votre réponse ici* +Comment vous semble évoluer la courbe ? Observez bien les différentes courbes du graphique ci-dessous. Quelle est la plus ressemblante à notre situation ? + +==> Un algorithme de complexité O(n) @@ -75,20 +83,32 @@ Observez attentivement l'animation de tri par sélection ci-dessous pour en comp -Écrivez en français classique ce que vous voyez. Quel est le fonctionnement ? Comment l'expliqueriez-vous à quelqu'un ? *Écrivez votre réponse ici* +Écrivez en français classique ce que vous voyez. Quel est le fonctionnement ? Comment l'expliqueriez-vous à quelqu'un ? + +On a deux valeurs qui se comparent entre elles dans le tableau. Les deux le parcourent progressivement, une case à la fois. Quand la première valeur (en bleu) est plus grande que la seconde (en rouge) on stoppe la progression de la valeur rouge. Elle reprend et saute à la position derrière la valeur bleue dès que cette dernière devient plus petite. Quand la première valeur (en bleu) atteint la fin du tableau, on inverse la deuxième valeur en rouge avec la dernière valeur triée. On répète ce processus jusqu'à la fin du tableau. Puis implémentez l'algorithme en python dans la fonction `sort` du fichier `sort/selection.py`. Vérifiez son bon fonctionnement en éxécutant le fichier `python3 -m unittest`. Le test correspondant au tri par sélection doit passer. Mesurez le temps d'éxécution pour un tableau de : -- 1000 entrées -- 2000 entrées -- ... -- 10000 entrées +Temps écoulé : 0.04999995231628418 +Temps écoulé : 0.2057938575744629 +Temps écoulé : 0.46288228034973145 +Temps écoulé : 0.8257730007171631 +Temps écoulé : 1.2953431606292725 +Temps écoulé : 1.8596084117889404 +Temps écoulé : 2.533503532409668 +Temps écoulé : 3.2937428951263428 +Temps écoulé : 4.1926844120025635 +Temps écoulé : 5.192129850387573 Tracez le graphique correspondant. -Quelle semble être la complexité de notre fonction de tri ? Cela est-il logique par rapport au code que vous avez implémenté ? *Écrivez votre réponse ici* + + +Quelle semble être la complexité de notre fonction de tri ? Cela est-il logique par rapport au code que vous avez implémenté ? + +==> complexité O(n²), la durée du processus (et la complexité) est décuplée du fait de la boucle imbriquée ### 2. Tri par insertion @@ -96,7 +116,9 @@ Observez attentivement l'animation de tri par insertion ci-dessous pour en compr -Écrivez en français classique ce que vous voyez. Quel est le fonctionnement ? Comment l'expliqueriez-vous à quelqu'un ? *Écrivez votre réponse ici* +Écrivez en français classique ce que vous voyez. Quel est le fonctionnement ? Comment l'expliqueriez-vous à quelqu'un ? + +Dans un tableau à entiers mélangés, on va progressivement le parcourir en placant chaque entier plus ou moins en arrière ou pas en fonction de sa grandeur par rapport aux précédents entiers parcourus. On commence à l'index 1 et on continue jusqu'à la fin du tableau. On compare le dernier élément de la portion déjà triée/parcourue avec le suivant, si le suivant est plus petit, on va le placer dans la bonne position dans la portion déjà parcourue. Puis implémentez l'algorithme en python dans la fonction `sort` du fichier `sort/insertion.py`. Utilisez les tests automatiques pour vérifier votre implémentation. @@ -106,10 +128,24 @@ Mesurez le temps d'éxécution pour un tableau de : - 2000 entrées - ... - 10000 entrées +Temps écoulé : 0.037030696868896484 +Temps écoulé : 0.1215670108795166 +Temps écoulé : 0.2595536708831787 +Temps écoulé : 0.4952089786529541 +Temps écoulé : 0.7450480461120605 +Temps écoulé : 1.0163190364837646 +Temps écoulé : 1.4117050170898438 +Temps écoulé : 1.8339478969573975 +Temps écoulé : 2.30259108543396 +Temps écoulé : 2.8572349548339844 Tracez le graphique correspondant. -Quelle semble être la complexité de notre fonction de tri ? Cela est-il logique par rapport au code que vous avez implémenté ? *Écrivez votre réponse ici* + + +Quelle semble être la complexité de notre fonction de tri ? Cela est-il logique par rapport au code que vous avez implémenté ? + +==> complexité O(n²), la durée du processus (et la complexité) est décuplée du fait de la boucle imbriquée ### 3. Tri par fusion @@ -154,7 +190,9 @@ Observez bien le schéma suivant : il représente le concept du tri par fusion. Cet algorithme est de type "diviser pour régner". -Écrivez en français classique ce que vous voyez. Quel est le fonctionnement ? Comment l'expliqueriez-vous à quelqu'un ? *Écrivez votre réponse ici* +Écrivez en français classique ce que vous voyez. Quel est le fonctionnement ? Comment l'expliqueriez-vous à quelqu'un ? + +Dans un tableau à entiers mélangés, on va le diviser par deux plusieurs fois de manière à avoir plusieurs groupes jusqu'à ce qu'il ne reste que plusieurs petits morceaux de 1 entier. On va ensuite prendre par groupe de deux chaque petit morceau et trier, puis regrouper les groupes de deux en quatre, et re-trier, puis regrouper en huit, et ainsi de suite. À la fin, on se retrouve avec le tableau d'origine reconstitué et trié. Complétez la fonction `sort` du fichier `sort/fusion.py` en suivant les instructions suivantes. @@ -172,11 +210,26 @@ Mesurez le temps d'éxécution pour un tableau de : - ... - 10000 entrées +Temps écoulé : 0.010993719100952148 +Temps écoulé : 0.020018577575683594 +Temps écoulé : 0.032997846603393555 +Temps écoulé : 0.019037485122680664 +Temps écoulé : 0.023550033569335938 +Temps écoulé : 0.02600574493408203 +Temps écoulé : 0.031022071838378906 +Temps écoulé : 0.03447532653808594 +Temps écoulé : 0.04099726676940918 +Temps écoulé : 0.0455470085144043 + Tracez le graphique correspondant. -Quelle semble être la complexité de notre fonction de tri ? Cela est-il logique par rapport au code que vous avez implémenté ? *Écrivez votre réponse ici* + + +Quelle semble être la complexité de notre fonction de tri ? Cela est-il logique par rapport au code que vous avez implémenté ? -Question bonus : Y a-t-il des tailles de tableaux pour lesquelles le tri par fusion n'est pas aussi rapide que les précédents tris abordés ? *Écrivez votre réponse ici* +==> complexité O(n*log n) + +Question bonus : Y a-t-il des tailles de tableaux pour lesquelles le tri par fusion n'est pas aussi rapide que les précédents tris abordés ? ### 4. sort() @@ -184,6 +237,19 @@ Bien que tout cela soit fascinant, Python possède sa propre méthode de tri : ` Une dernière fois, analysez le temps d'exécution et découvrez si python fait mieux que nos implémentations rudimentaires ;) +Temps écoulé : 0.0010001659393310547 +Temps écoulé : 0.001971006393432617 +Temps écoulé : 0.0030002593994140625 +Temps écoulé : 0.0030336380004882812 +Temps écoulé : 0.003978252410888672 +Temps écoulé : 0.0049991607666015625 +Temps écoulé : 0.00602269172668457 +Temps écoulé : 0.005975008010864258 +Temps écoulé : 0.007005453109741211 +Temps écoulé : 0.007962942123413086 + +La durée du processus est en effet inférieure à 0.01 seconde dans la plupart des cas. + ## Pour rendre ce TP Merci de faire une Pull Request vers ce repository. diff --git a/__main__.py b/__main__.py index 98a585e..ab7cad9 100644 --- a/__main__.py +++ b/__main__.py @@ -1,5 +1,9 @@ -def main(): - print("Hello world") +from sort.range import generate_array_of_number +from sort.selection import sort +def main(): + arr = generate_array_of_number(100) + sortarr = sort(arr) + print(sortarr) main() diff --git a/img/g1.png b/img/g1.png new file mode 100644 index 0000000000000000000000000000000000000000..423acdb886572a3c76278231da428ad479c36085 GIT binary patch literal 21786 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 z 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 VeIEQ6Lk9s9Xldx-N>AH_{tx8$iGBb8 literal 0 HcmV?d00001 diff --git a/sort/count.py b/sort/count.py new file mode 100644 index 0000000..277ab69 --- /dev/null +++ b/sort/count.py @@ -0,0 +1,9 @@ +import time + +def count_time(): + """Count time: + Simple method to count time between the start and end of an operation""" + start: float = time.time() + # do something + end: float = time.time() + print("Temps écoulé :", end - start) diff --git a/sort/fusion.py b/sort/fusion.py index 73a21d3..a393226 100644 --- a/sort/fusion.py +++ b/sort/fusion.py @@ -1,2 +1,42 @@ def sort(array: list[int]) -> list[int]: - return array + """Merge Sort Part 1: + Continuously (recursively) split the given array in two, + the result is merged and returned""" + length = len(array) + + if length <= 1: + return array + + # Split the array in two and sort each + middle = length // 2 + left = sort(array[:middle]) + right = sort(array[middle:]) + + # Merge the two sorted halves + return merge(left, right) + + +def merge(left, right): + """Merge Sort Part 2: + Sort and merge two given halveds of an array""" + merged_list = [] + left_i = 0 + right_i = 0 + + # Merge the two lists while there are elements in both + while left_i < len(left) and right_i < len(right): + if left[left_i] < right[right_i]: + # Place left element first as it's less than right element + merged_list.append(left[left_i]) + left_i += 1 + else: + # Place right element first as it's less than left element + merged_list.append(right[right_i]) + right_i += 1 + + # Takes the remaining elements in the slice + # and appends them to the end of merged_list (they're already sorted) + merged_list.extend(left[left_i:]) + merged_list.extend(right[right_i:]) + + return merged_list diff --git a/sort/graph.py b/sort/graph.py new file mode 100644 index 0000000..b1f7a2d --- /dev/null +++ b/sort/graph.py @@ -0,0 +1,24 @@ +import matplotlib.pyplot as plt + +x_values = [1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000] +y_values = [ + 0.010993719100952148, + 0.020018577575683594, + 0.032997846603393555, + 0.019037485122680664, + 0.023550033569335938, + 0.02600574493408203, + 0.031022071838378906, + 0.03447532653808594, + 0.04099726676940918, + 0.0455470085144043, +] + +plt.plot(x_values, y_values, marker='o', linestyle='-', color='r') + + +plt.xlabel('Array Entries') +plt.ylabel('Time of execution (seconds)') +plt.title('Y Execution Time of X elements in Array') + +plt.show() \ No newline at end of file diff --git a/sort/insertion.py b/sort/insertion.py index 73a21d3..a2db4fb 100644 --- a/sort/insertion.py +++ b/sort/insertion.py @@ -1,2 +1,27 @@ def sort(array: list[int]) -> list[int]: + """ + Insertion Sort: + Sort an array one element at a time by iteratively shift elements to their correct positions + in the array + """ + + # Determine the length of the array + length = len(array) + + # The loop is starting from the second element, index 1 + for i in range(1, length): + # The current element we're comparing against the last sorted element + current_element = array[i] + + # Last sorted item idx needed to find the position where we need to put current element + last_sorted_index = i-1 + + # Shift elements of the sorted portion to the right if they are larger than current element + while last_sorted_index >= 0 and array[last_sorted_index] > current_element: + array[last_sorted_index+1] = array[last_sorted_index] + last_sorted_index -= 1 + + # Place current element into its correct position + array[last_sorted_index + 1] = current_element + return array diff --git a/sort/range.py b/sort/range.py index fc252ab..2827a2a 100644 --- a/sort/range.py +++ b/sort/range.py @@ -1,2 +1,7 @@ +import random + def generate_array_of_number(array_size: int) -> list[int]: - return [] + """Generate a random list of numbers + """ + array = [random.randint(0, 100) for i in range(array_size)] + return array diff --git a/sort/recursion.py b/sort/recursion.py index e7f4320..5668e7e 100644 --- a/sort/recursion.py +++ b/sort/recursion.py @@ -1,2 +1,3 @@ def get_factorial(number: int) -> int: - return number + """Get the factorial of a number using recursion""" + return get_factorial(number-1) * number if number > 1 else 1 diff --git a/sort/selection.py b/sort/selection.py index 73a21d3..0d4eadc 100644 --- a/sort/selection.py +++ b/sort/selection.py @@ -1,2 +1,32 @@ def sort(array: list[int]) -> list[int]: + """Selection Sort: + Continuously explore a given list, compare adjacent elements and swaps them + if they are in the wrong order + """ + + # Determine the length of the array + length = len(array) + + # Do length-1 turns through the array (breaks if finished = False) + for turn in range(length - 1): + # Flag to check if any swap has been made in this turn + # (=> Iteration with no swap means that every element has been checked + # and thus the array has every number in order) + swap = False + + # Traverse the array from 0 to length-turn-1 + for i in range(length - turn - 1): + i1 = i + i2 = i + 1 + # Compare the current element with the next one + if array[i1] > array[i2]: + # Swap them if the current element is greater than the next one + array[i1], array[i2] = array[i2], array[i1] + # A swap was made + swap = True + + # If no swaps were made, the array is sorted + if not swap: + break + return array