100 000 - не очень большой массив на большинстве современных устройств.Вы уверены, что не можете просто отсортировать их все, используя стандартную библиотечную функцию сортировки?
Вы можете избежать полной сортировки, используя вариант heapsort .Обычно в heapsort вы создаете кучу всего набора данных (100 000 элементов в вашем случае).Вместо этого, разрешается только увеличение кучи до 20000 элементов.Держите самый большой элемент в верхней части кучи.Когда куча заполнена (20 000 элементов), вы сравниваете каждый последующий элемент набора данных с вершиной кучи.Если следующий элемент набора данных больше, чем вершина кучи, просто пропустите его.Если он меньше вершины кучи, вставьте верх кучи и вставьте элемент из набора данных.
Как только вы пройдете весь набор данных, у вас будет куча из 20 000 наименьшихэлементы набора данных.Вы можете вытолкнуть их один за другим в массив, чтобы получить отсортированный массив.
Этот алгоритм выполняется за O (N log K), где N - размер набора данных (100 000 в вашем примере) и K - количество элементов, которое вы хотите сохранить (20 000 в вашем примере).