Performant фиксированный диапазон массива, который изменяется - PullRequest
0 голосов
/ 09 января 2019

Этот вопрос немного сложно задать, потому что я не совсем уверен, что я спрашиваю. Я знаю, как это «должно» работать в моей голове.


Проблема:

Я пытаюсь создать индекс, который использует массив фиксированного размера, для реализации поиска типа "диапазон".


Пример:

Учитывая длину массива 10, и мы нажимаем:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Все работает! Он подходит правильно.

Однако, учитывая длину массива 12, и мы помещаем в него 24 элементов;

мы должны получить что-то вроде:

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]

Давайте проверим, нужно ли добавить в него число 13.

[2, 4, 6, 8, 10, 12, 13, 14, 16, 18, 20, 22, 24]

Хорошо, здесь ничего не поделаешь. 13 находится в пределах допустимого диапазона .. поэтому мы не добавляем его.

Теперь давайте добавим в нее число 28.

[2, 4, 6, 8, 10, 12, 13, 14, 16, 18, 20, 22, 24, 28]

Но теперь у нас есть 25 предметов. Я не уверен, что здесь произойдет, но я думаю, мы хотим перестроить массив. В идеале мы хотим cap массив до фиксированного размера, но нам нужен способ создать новый набор диапазонов.

Это также должно работать в обратном порядке, если у нас есть массив:

[4, 7, 10] - максимальный размер 3

и мы добавляем 1 к нему, нам нужно создать новый диапазон.

[1, 3, 10]


Надеюсь, я прояснил этот вопрос ... Я на самом деле не уверен, является ли это даже лучшим способом для достижения моих целей. Все, что я знаю, это то, что мне нужен фиксированный размер массива и возможность индексировать «элементы», чтобы я мог использовать его как диапазон.

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

Подобные вопросы здесь: # 1 , # 2

...