diff --git a/sorting.c b/sorting.c new file mode 100644 index 0000000..7a106d2 --- /dev/null +++ b/sorting.c @@ -0,0 +1,110 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* sorting.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/01/07 19:14:03 by apommier #+# #+# */ +/* Updated: 2022/01/07 19:14:03 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +void find_loop_index(t_list *list) +{ + t_list *start; + t_list *save; + int loop_size; + int loop_size2; + + loop_size2 = 0; + loop_size = 0; + start = list; + while (list) + { + loop_size = find_loop(start, list, 0); + if (loop_size > loop_size2) + { + loop_size2 = loop_size; + save = list; + } + list = list->next; + } + find_loop(start, save, 1); + printf("loop_size = %d\n", loop_size2); +} + +int find_loop(t_list *start, t_list *list, int setswap) +{ + int countdown; + int loop_size; + t_list *swap; + + loop_size = 0; + swap = list->next; + countdown = ft_lstsize(start) - 1; + while (countdown) + { + if (swap) + { + if (list->index == swap->index - 1 - loop_size) + loop_size++; + else if (setswap) + swap->swap = 1; + countdown--; + swap = swap->next; + } + else + swap = start; + } + printf("------------return= %d\n", loop_size); + return (loop_size); +} + +void swap_to_b(t_list list, t_list best,int loop) +{ + int swap; + t_list start; + + start = list; + swap = 0; + while (list) + { + ft_sa_sb(); + swap = find_loop(start, best); + if (swap > loop) + { + loop = swap; + add_sa(); + } + else + ft_sa_sb(); + if(list->swap) + ft_pa(); + else if (!list->swap) + ft_ra_rb(); + list = list->next; + } +} + + + +/*while (countdown - 1) + { + if (swap) + { + if (list->index == swap->index - 1 - loop_size) + { + printf("swap= %d index= %d so ++++++\n", *(int*)swap->nbr, swap->index); + loop_size++; + } + else + printf("nop swap = %d index = %d\n", *(int*)swap->nbr, swap->index); + countdown--; + swap = swap->next; + } + else + swap = start; + }*/ \ No newline at end of file