Поиск значений между минимальным и максимальным в 1d массиве в Javascript - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть массив со значениями, и мне нужно найти все значения от мин до макс.Я считаю, что мне нужно построить какое-то дерево поиска, это правильно?Я хочу что-то вроде:

var values : number[] = tree.findBetween(min : number, max: number);

Эффективность поиска является основным критерием.

Кроме того, мне не нужно менять дерево (добавлять / удалять значения) после его построения.

Что мне нужно?Бинарное дерево?Сбалансированное дерево поиска?Статическое дерево поиска?

С чего начать?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

О, прости, мой Globish иногда подшучивает над мной.В противном случае, я не вижу слишком много, где трудность для такого вопроса, но здесь всегда новый ответ (надеясь, что на этот раз я не буду рядом с табличкой)

за пределами этого: что может быть быстрее, чем нативный метод js?

const
  MaxValue = 50,
  MinValue = 10
  ;

let
  ArrayOrigin = [12, 5, 8, 130, 44, 25, 14, 42, 36 ],
  ArrayInLimits = ArrayOrigin.filter( elm=>  elm>MinValue && elm<MaxValue)
  ;

  console.log( ...ArrayInLimits );
0 голосов
/ 27 декабря 2018

Благодаря @ bergi за ответ, мне действительно не нужно создавать дерево поиска для выполнения двоичного поиска по отсортированному массиву, поэтому я должен быть в состоянии найти свои значения и получить частьмассива между ними.

Просто для любопытства я нашел интересную статью , сравнивающую производительность бинарного поиска с обычным циклом поиска по массиву.Статья почему-то по ошибке включает время сортировки массива по времени поиска - вы должны использовать двоичный поиск, только если у вас есть отсортированный массив (если вы можете предварительно отсортировать его до критического периода производительности).Я запускаю код, содержащий до 1-7 элементов, и двоичный поиск по отсортированным массивам занимает 0 миллисекунд по сравнению с десятками миллисекунд для простого зацикливания массива.

В конце концов, это самая быстрая реализация двоичного поискаЯ мог бы найти.https://oli.me.uk/2014/12/17/revisiting-searching-javascript-arrays-with-a-binary-search/

Спасибо всем за помощь.

...