Так как вы упомянули «относительно статический», простой отсортированный массив будет делать все, что вы хотите, и он сильно оптимизирован как с точки зрения пространства, так и времени.
«получить от 2 до 3 элементов в порядке убывания»просто поиск соответствующих индексов массива.
"получить строки, начинающиеся с 'ap'", можно сделать с помощью двоичного поиска.Поиск останавливается на или непосредственно перед первой строкой, начинающейся с 'ap', и с этого момента вы просто просматриваете, пока не найдете все такие строки.