104 lines
5.0 KiB
Markdown
104 lines
5.0 KiB
Markdown
## description du programme :
|
|
|
|
il faut trier une liste d'entiers, en utilisant uniquement deux piles (a et b) et 3 actions (swap, push, rotate) et leur derivées (11 actions au total)
|
|
|
|
la methode que j'ai utilisee s'inspire du tris [quicksort](https://www.youtube.com/watch?v=ywWBy6J5gz8), qui consiste a utiliser une valeur pivot et a envoyer sur une autre pile toutes les valeurs plus petites (ou plus grandes au choix), donc on se retrouve a la fin d'un tour avec deux piles qui ne sont pas triées mais avec dans l'une tous les nombres plus petits que le pivot, et dans l'autre tous ceux plus grands
|
|
|
|
et on repete l'operation jusqu'à ce que la liste soit triee
|
|
|
|
ici, comme on n'a que deux piles disponibles, la premiere operation sera simple, mais pour les operations suivantes il va falloir trouver un moyen de distinguer des sous-listes dans chaque piles
|
|
|
|
voici le deroulement :
|
|
|
|
## pistes d'ameliorations :
|
|
|
|
---
|
|
|
|
|
|
|
|
## ressources :
|
|
* **testeur :** https://github.com/lmalki-h/push_swap_tester
|
|
* test
|
|
* https://medium.com/nerd-for-tech/push-swap-tutorial-fa746e6aba1e
|
|
* test
|
|
* https://medium.com/@jamierobertdawson/push-swap-the-least-amount-of-moves-with-two-stacks-d1e76a71789a
|
|
* test
|
|
* ligne de commande pour generer une liste de nombres melangee :
|
|
* test
|
|
```
|
|
shuf -i 0-RANGE -n SIZE))
|
|
```
|
|
avec RANGE a remplacer par la valeure maximum
|
|
et SIZE par la taille de la liste
|
|
|
|
## comparaison des algorithmes de tris :
|
|
|
|
source des comparaisons ci-dessous : [https://www.youtube.com/watch?v=xoR-1KwQh2k](https://www.youtube.com/watch?v=xoR-1KwQh2k)
|
|
|
|
|
|
numbers comparisons array-access name
|
|
200 19 900 18 448 Bubble Sort
|
|
200 20 000 20 384 Cocktail Shaker Sort
|
|
200 19 501 19 306 Gnome Sort
|
|
200 9 568 18 752 Optimized Gnome Sort
|
|
2000 18 308 18 498 Odd-Even Sort
|
|
2000 1 999 000 3 998 Selection Sort
|
|
2000 2 002 000 4 000 Double Selection Sort
|
|
2000 965 671 19 273 364 Insertion Sort
|
|
2000 19 201 1 890 122 Binary Insertion Sort
|
|
2000 53 378 20 574 Comb Sort
|
|
2000 31 948 32 789 Shell Sort
|
|
2000 19 423 43 904 Merge Sort
|
|
2000 31 048 59 938 Binary Merge
|
|
2000 100 955 2 156 938 Weave Merge Sort
|
|
2000 19 496 43 039 TimSort
|
|
2000 1 993 119 1 930 836 Merge Sort In-Place
|
|
2000 31 022 111 758 WikiSort (Block Merge Sort)
|
|
2000 22 193 85 044 GrailSort (Block Merge Sort)
|
|
2000 30 905 10 510 Quick Sort
|
|
2000 26 160 27 488 Stable Quick Sort
|
|
2000 24 482 18 852 Dual Pivot Quick Sort
|
|
2000 37 841 40 490 Max Heap Sort
|
|
2000 37 714 42 206 Min Heap Sort
|
|
2000 21 021 26 756 Weak Heap Sort
|
|
2000 24 996 27 926 Ternary Heap Sort
|
|
2000 50 078 27 803 Smooth Sort
|
|
2000 19 410 2 000 Tournament Sort
|
|
2000 5 935 671 3 996 Cycle Sort
|
|
2000 25 711 16 616 std::sort (Introsort)
|
|
2048 33 352 25 109 Quick Shell Sort (Introsort with Shellsort)
|
|
2048 19 821 31 652 std::stable sort (Insert/Bottom-up Merge)
|
|
2000 58 367 66 296 Batcher's Odd-Even Mergesort
|
|
2000 64 832 66 118 Batcher's Bitonic Sort
|
|
200 20 099 30 684 Pancake Sort
|
|
2000 54 989 2 000 Patience Sort
|
|
2000 0 3 973 224 Gravity Sort
|
|
2000 0 6 000 Counting Sort
|
|
2000 0 4 000 Pigeonhole Sort
|
|
2000 0 12 000 Radix LSD Sort (Base 4)
|
|
2000 0 4 220 American Flag Sort (128 Buckets)
|
|
2048 0 19 207 376 Radix LSD In-Place Sort (Base 10)
|
|
2000 0 34 562 144 Radix LSD In-Place Sort (Base 2)
|
|
2000 0 26 000 Radix MSD Sort (Base 4)
|
|
2000 0 46 000 Radix MSD Sort (Base 2)
|
|
2000 0 80 048 Shatter Sort
|
|
2000 0 12 000 Simple Shatter Sort
|
|
2000 5 044 6 098 Flash Sort
|
|
2000 28 868 55 742 Time Sort (Mul 4) + Insertion Sort
|
|
200 797 161 19 928 Stooge Sort
|
|
200 50 783 400 Bad Sort
|
|
200 114 006 565 19 276 Silly Sort
|
|
200 114 006 565 20 716 Slow Sort
|
|
200 100 437 4 771 028 Less Bogo Sort
|
|
200 131 994 2 472 298 Cocktail Bogo Sort
|
|
10 4 875 249 56 784 400 Bogo Sort
|
|
|
|
|
|
---
|
|
|
|
autre source de comparaison : [https://www.toptal.com/developers/sorting-algorithms](https://www.toptal.com/developers/sorting-algorithms)
|
|
push_swap_visalizer : [https://github.com/o-reo/push_swap_visualizer](https://github.com/o-reo/push_swap_visualizer)
|
|
|
|
---
|
|
|