limpié divide and conquer
This commit is contained in:
parent
daf9d6cc4a
commit
a72f55594b
@ -25,28 +25,23 @@
|
|||||||
* @param minimum_dist La distancia minimo encontrado
|
* @param minimum_dist La distancia minimo encontrado
|
||||||
* @return Retorna los 2 puntos mas cercanos
|
* @return Retorna los 2 puntos mas cercanos
|
||||||
*/
|
*/
|
||||||
point_t * divide_and_conquer(point_t *points, unsigned int n, double *minimum_dist) {
|
int compareX(const void* a, const void* b){ //ordena el arreglo de puntos de acuerdo a X
|
||||||
|
|
||||||
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
|
|
||||||
Point *p1 = (Point *)a, *p2 = (Point *)b;
|
Point *p1 = (Point *)a, *p2 = (Point *)b;
|
||||||
return (p1->x - p2->x);
|
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;
|
Point *p1 = (Point *)a, *p2 = (Point *)b;
|
||||||
return (p1->y - p2->y);
|
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 min(float x, float y){ // Función para encontrar la distancia minima entre dos valores de tipo flotante
|
||||||
float stripClosest(Point strip[], int size, float d)
|
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
|
float min = d; // inicializa en la distancia minima d
|
||||||
|
|
||||||
qsort(strip, size, sizeof(Point), compareY);
|
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]);
|
min = dist(strip[i], strip[j]);
|
||||||
|
|
||||||
return min;
|
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
|
// Función para encontrar la distancia más corta entre puntos
|
||||||
float closestUtil(Point P[], int n)
|
float closestUtil(Point P[], int n)
|
||||||
|
Loading…
Reference in New Issue
Block a user