diff options
| author | Dominik Kaiser | 2024-04-26 18:36:07 +0200 |
|---|---|---|
| committer | Dominik Kaiser | 2024-04-26 18:36:07 +0200 |
| commit | 9ec4dd2e78c61a2b2be8d645d3e523f954d83e9e (patch) | |
| tree | f824fdab2ce898a39dd9c79b22a627d156374e59 /sorting.c | |
| parent | fb11c45c1fa1246dbc80b491f55598698a932e5f (diff) | |
| download | push_swap-9ec4dd2e78c61a2b2be8d645d3e523f954d83e9e.tar.gz push_swap-9ec4dd2e78c61a2b2be8d645d3e523f954d83e9e.zip | |
Sort three and some norme cleanup
Diffstat (limited to 'sorting.c')
| -rw-r--r-- | sorting.c | 22 |
1 files changed, 20 insertions, 2 deletions
@@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/04/13 15:04:19 by dkaiser #+# #+# */ -/* Updated: 2024/04/26 13:54:26 by dkaiser ### ########.fr */ +/* Updated: 2024/04/26 18:35:27 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,6 +28,18 @@ static int is_sorted(t_stack *stack) return (1); } +static void sort_three(t_psdata *data) +{ + if (data->a->stack[1] > data->a->stack[0] + && data->a->stack[1] > data->a->stack[2]) + run_command(data, RRA); + else if (data->a->stack[0] > data->a->stack[1] + && data->a->stack[0] > data->a->stack[2]) + run_command(data, RA); + if (data->a->stack[0] > data->a->stack[1]) + run_command(data, SA); +} + static void ps_radixsort(t_psdata *data, int bit) { int i; @@ -51,6 +63,12 @@ static void ps_radixsort(t_psdata *data, int bit) void stack_sort(t_psdata *data) { - if (!is_sorted(data->a)) + if (is_sorted(data->a)) + return ; + else if (data->a->size == 2) + run_command(data, SA); + else if (data->a->size == 3) + sort_three(data); + else ps_radixsort(data, 0); } |
