Beispiel #1
0
int			ft_recus(t_push **stacka, t_push **stackb, int i, t_info *info)
{
	if (ft_is_sort(*stacka) == 1 && *stackb == NULL)
		return (1);
	if (i == 0)
		return (0);
	if (ft_recus_2(stacka, stackb, i, info) == 1)
		return (1);
	if (ft_recus_3(stacka, stackb, i, info) == 1)
		return (1);
	if (ft_recus_4(stacka, stackb, i, info) == 1)
		return (1);
	if (ft_recus_5(stacka, stackb, i, info) == 1)
		return (1);
	return (0);
}
Beispiel #2
0
static int	ft_sort_core(int *min_pos, int *ret, t_env *e)
{
	if ((*ret = ft_is_sort(e->a, e->len_a)) == 1)
	{
		while (e->len_b > 0)
			ft_disp_push_a(e);
		return (-1);
	}
	else if (*ret == 2)
	{
		ft_disp_rev_rot_a(e);
		ft_disp_rev_rot_a(e);
		ft_disp_swap_a(e);
		ft_disp_rot_a(e);
		ft_disp_rot_a(e);
		return (0);
	}
	ft_sort_core_2(min_pos, e);
	return (1);
}
Beispiel #3
0
static void	ft_sort_core_2(int *min_pos, t_env *e)
{
	int	i;

	i = 0;
	if (*min_pos == 1)
	{
		ft_disp_swap_a(e);
		i++;
	}
	else if (*min_pos <= (int)e->len_a / 2)
		while (i++ < *min_pos)
			ft_disp_rot_a(e);
	else
		while (i < (int)(e->len_a - *min_pos))
		{
			ft_disp_rev_rot_a(e);
			i++;
		}
	if (ft_is_sort(e->a, e->len_a) != 1)
		ft_disp_push_b(e);
}