Given a vector of sorted double values `vec`

of size
`n`

and a vector of `m`

query objects `q`

.

`findNN`

determines for each element `q[i]`

in `q`

the nearest neighbor index `o`

so that the following remains true:

there is no element `k`

with `1`

*≤* `k`

*≤* `n`

and `k`

is not `o`

so that

`abs(vec[k] - q[i])`

< `abs(vec[o] - q[i])`

.

1 |

`q` |
a double vector which can be considered as query objects. |

`vec` |
a sorted double vector which can be considered as a data base. |

`check` |
boolean enables test if |

The internal algorithm of `findNN`

is implemented as binary search.
`findNN`

has *O(m * log(n))* time complexity.

Christian Panse 2007, 2008, 2009, 2010, 2012 based on the c stdlib bsearch methode and the R package:base function findInterval.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ```
(NNidx <- findNN(q<-c(1, 1.0001, 1.24, 1.26), DB<-seq(1,5,by=0.25)))
(NNidx == c(1,1,2,2))
DB<-sort(rnorm(100, mean=100, sd=10))
# should be 0
unique(DB[findNN(DB,DB)] - DB)
q<-rnorm(100, mean=100)
idx.NN<-findNN(q,DB)
hist(DB[findNN(q,DB)] - q)
# definition of findNN holds
i<-1:5
findNN(3.5, i)
i<-1:6
findNN(3.5, i)
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.