ByteBoss & NoteMax
Привет, НотМакс. Я уже несколько часов смотрю на этот узкий O(n log n) участок сортировки. Думаешь, алгоритм Quickselect поможет сократить время работы вдвое, или это просто временное решение?
Привет,
Quickselect в среднем за линейное время выдаст тебе k-й элемент, так что если нужен просто медиана или какой-то ранг, можно заметно сократить время работы. Но если тебе нужен полностью отсортированный список, то снова возвращаешься к O(n log n). Да и в худшем случае может выстрелить до O(n²), да и константы не самые лучшие. Так что это быстрое решение для конкретного запроса, а не полная замена сортировке. Если застрял на узком месте – сначала профилируй, потом принимай решение.
Звучит надёжно. Сначала профилирование, потом решим, стоит ли рисковать с этой полу-хитростью. Если нужен только медиану, используй quickselect, а иначе — придерживайся проверенного O(n log n). Следи за константами.
Звучит как неплохой план. Профиль, потом решение. Быстрый выбор для среднего значения, а в остальных случаях лучше оставить классический сортер и просто убрать эти константы.
Понял, действуем по плану – сначала профиль, потом выбираем инструмент. Quickselect для одного ранга, в остальных случаях используем классический сортер и просто подкрути константы. Код делай лаконичным, и победа будет за тобой.