Этот вопрос немного сложно задать, потому что я не совсем уверен, что я спрашиваю. Я знаю, как это «должно» работать в моей голове.
Проблема:
Я пытаюсь создать индекс, который использует массив фиксированного размера, для реализации поиска типа "диапазон".
Пример:
Учитывая длину массива 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