diff --git a/src/divide_and_conquer.c b/src/divide_and_conquer.c index 26c438f..b846522 100644 --- a/src/divide_and_conquer.c +++ b/src/divide_and_conquer.c @@ -25,28 +25,23 @@ * @param minimum_dist La distancia minimo encontrado * @return Retorna los 2 puntos mas cercanos */ -point_t * divide_and_conquer(point_t *points, unsigned int n, double *minimum_dist) { - - if (n <= 3) - return brute_force(points, n, &minimum_dist); - int compareX(const void* a, const void* b){ //ordena el arreglo de puntos de acuerdo a X +int compareX(const void* a, const void* b){ //ordena el arreglo de puntos de acuerdo a X Point *p1 = (Point *)a, *p2 = (Point *)b; return (p1->x - p2->x); - } +} - int compareY(const void* a, const void* b){ //ordena el arreglo de puntos de acuerdo a Y +int compareY(const void* a, const void* b){ //ordena el arreglo de puntos de acuerdo a Y Point *p1 = (Point *)a, *p2 = (Point *)b; return (p1->y - p2->y); - } - // Función para encontrar la distancia minima entre dos valores de tipo flotante - float min(float x, float y) - { - return (x < y)? x : y; - } +} - // Función para encontrar la distancia entre los puntos más cerca del arreglo dado - float stripClosest(Point strip[], int size, float d) - { +float min(float x, float y){ // Función para encontrar la distancia minima entre dos valores de tipo flotante + return (x < y)? x : y; +} + + +float stripClosest(Point strip[], int size, float d) // Función para encontrar la distancia entre los puntos más cerca del arreglo dado +{ float min = d; // inicializa en la distancia minima d qsort(strip, size, sizeof(Point), compareY); @@ -57,7 +52,14 @@ point_t * divide_and_conquer(point_t *points, unsigned int n, double *minimum_di min = dist(strip[i], strip[j]); return min; - } +} + +point_t * divide_and_conquer(point_t *points, unsigned int n, double *minimum_dist) { + + if (n <= 3) + return brute_force(points, n, &minimum_dist); + + // Función para encontrar la distancia más corta entre puntos float closestUtil(Point P[], int n)