summaryrefslogtreecommitdiff
path: root/sorting.c
diff options
context:
space:
mode:
authorDominik Kaiser2024-04-26 18:36:07 +0200
committerDominik Kaiser2024-04-26 18:36:07 +0200
commit9ec4dd2e78c61a2b2be8d645d3e523f954d83e9e (patch)
treef824fdab2ce898a39dd9c79b22a627d156374e59 /sorting.c
parentfb11c45c1fa1246dbc80b491f55598698a932e5f (diff)
downloadpush_swap-9ec4dd2e78c61a2b2be8d645d3e523f954d83e9e.tar.gz
push_swap-9ec4dd2e78c61a2b2be8d645d3e523f954d83e9e.zip
Sort three and some norme cleanup
Diffstat (limited to 'sorting.c')
-rw-r--r--sorting.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/sorting.c b/sorting.c
index ec8a336..88055e7 100644
--- a/sorting.c
+++ b/sorting.c
@@ -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);
}