mirror of
https://github.com/DavidGailleton/42-Push_Swap.git
synced 2026-01-27 08:41:58 +00:00
fix my medium algo
This commit is contained in:
@@ -16,11 +16,14 @@ int get_first_lower(t_stack *first)
|
|||||||
{
|
{
|
||||||
t_stack *tmp;
|
t_stack *tmp;
|
||||||
int lower;
|
int lower;
|
||||||
|
int pass;
|
||||||
|
|
||||||
tmp = first;
|
tmp = first;
|
||||||
lower = tmp->value;
|
lower = tmp->value;
|
||||||
while (tmp->next != first)
|
pass = 1;
|
||||||
|
while (tmp != first || pass == 1)
|
||||||
{
|
{
|
||||||
|
pass = 0;
|
||||||
if (lower > tmp->value)
|
if (lower > tmp->value)
|
||||||
lower = tmp->value;
|
lower = tmp->value;
|
||||||
tmp = tmp->next;
|
tmp = tmp->next;
|
||||||
@@ -85,17 +88,18 @@ int get_number_in_range(int max_range, t_stack *a, int range)
|
|||||||
int nb_in;
|
int nb_in;
|
||||||
t_stack *tmp;
|
t_stack *tmp;
|
||||||
t_stack *first;
|
t_stack *first;
|
||||||
|
int pass;
|
||||||
|
|
||||||
nb_in = 0;
|
nb_in = 0;
|
||||||
tmp = a;
|
tmp = a;
|
||||||
|
pass = 1;
|
||||||
first = tmp;
|
first = tmp;
|
||||||
while (tmp->next != first)
|
while (tmp != first || pass == 1)
|
||||||
{
|
{
|
||||||
|
pass = 0;
|
||||||
if (in_range(tmp->value, max_range, range))
|
if (in_range(tmp->value, max_range, range))
|
||||||
nb_in++;
|
nb_in++;
|
||||||
tmp = tmp->next;
|
tmp = tmp->next;
|
||||||
}
|
}
|
||||||
if (in_range(tmp->value, max_range, range))
|
|
||||||
nb_in++;
|
|
||||||
return (nb_in);
|
return (nb_in);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,12 +16,15 @@
|
|||||||
static int get_max_number(t_stack *first)
|
static int get_max_number(t_stack *first)
|
||||||
{
|
{
|
||||||
int max;
|
int max;
|
||||||
|
int pass;
|
||||||
t_stack *a;
|
t_stack *a;
|
||||||
|
|
||||||
a = first;
|
a = first;
|
||||||
max = a->value;
|
max = a->value;
|
||||||
while (a->next != first)
|
pass = 1;
|
||||||
|
while (a!= first || pass == 1)
|
||||||
{
|
{
|
||||||
|
pass = 0;
|
||||||
if (max < a->value)
|
if (max < a->value)
|
||||||
max = a->value;
|
max = a->value;
|
||||||
a = a->next;
|
a = a->next;
|
||||||
@@ -33,13 +36,17 @@ static int get_min_number(t_stack *first)
|
|||||||
{
|
{
|
||||||
int min;
|
int min;
|
||||||
t_stack *a;
|
t_stack *a;
|
||||||
|
int pass;
|
||||||
|
|
||||||
a = first;
|
a = first;
|
||||||
min = a->value;
|
min = a->value;
|
||||||
while (a->next != first)
|
pass = 1;
|
||||||
|
while (a != first || pass == 1)
|
||||||
{
|
{
|
||||||
|
pass = 0;
|
||||||
if (min > a->value)
|
if (min > a->value)
|
||||||
min = a->value;
|
min = a->value;
|
||||||
|
|
||||||
a = a->next;
|
a = a->next;
|
||||||
}
|
}
|
||||||
return (min);
|
return (min);
|
||||||
@@ -60,15 +67,15 @@ static int my_sqrt(int nb)
|
|||||||
int range_bucket(t_stack *first)
|
int range_bucket(t_stack *first)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
int diff;
|
long diff;
|
||||||
int sqrt;
|
int sqrt;
|
||||||
|
|
||||||
len = stack_len(first);
|
len = stack_len(first);
|
||||||
diff = get_max_number(first) - get_min_number(first);
|
diff = (long)get_max_number(first) - (long)get_min_number(first);
|
||||||
sqrt = my_sqrt(len);
|
sqrt = my_sqrt(len);
|
||||||
if (diff / sqrt < 2)
|
if (diff / sqrt < 2)
|
||||||
{
|
{
|
||||||
return (get_max_number(first));
|
return (get_max_number(first));
|
||||||
}
|
}
|
||||||
return ((get_max_number(first) - get_min_number(first)) / my_sqrt(len));
|
return (diff / my_sqrt(len));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user