Я пытаюсь реализовать алгоритм поискового вызова для набора данных, отсортированного по многим критериям. К сожалению, хотя некоторые из этих критериев могут быть реализованы на уровне базы данных, некоторые из них должны выполняться на уровне приложения (мы должны интегрироваться с другим источником данных). У нас есть требование поискового вызова (на самом деле бесконечное число прокрутки) и вы ищете способ минимизировать боль при сортировке всего набора данных на уровне приложения при каждом вызове поискового вызова.
Каков наилучший способ сделать частичный сортировку, только сортировка части списка, которую необходимо отсортировать? Есть ли эквивалент функции С++ std::partial_sort
, доступной в библиотеках .NET? Как мне решить эту проблему?
EDIT: Вот пример того, что я собираюсь:
Скажем, мне нужно получить элементы 21-40 из набора 1000 элементов, согласно некоторым критериям сортировки. Чтобы ускорить сортировку, и поскольку я все равно должен проходить через весь набор данных (это веб-сервис через HTTP, который является апатридом), мне не нужен весь набор данных, заказанный. Мне нужно только правильно настроить элементы 21-40. Достаточно создать 3 раздела: Элементы 1-20, несортированные (но все меньше элемента 21); элементы 21-40, отсортированы; и элементы 41-1000, несортированные (но все больше, чем элемент 40).