Мне просто интересно, можно ли (с некоторой серьезной паранойей и при определенных обстоятельствах) использовать алгоритм QuickSort как угрозу безопасности в приложении.
Как его базовая реализация, так и улучшенные версии, такие как 3-median-quicksort, обладают особенностью поведения, отклоняющегося от нормы для определенных входных данных, что означает, что их время выполнения может чрезвычайно увеличиться в этих случаях (имея сложность O(n^2)
) не говоря уже о возможности переполнения стека.
Следовательно, я вижу потенциальную возможность причинить вред, предоставляя предварительно отсортированные данные программе, которая приводит к такому поведению алгоритма, что может иметь непредсказуемые последствия, например, многопользовательское веб-приложение.
Стоит ли рассматривать этот странный случай с точки зрения безопасности (и поэтому заставит нас использовать взамен Intro- или Mergesort )?
Редактировать: Я знаю, что есть способы предотвратить наихудшие случаи Quicksort, но как насчет языковых интегрированных сортировок (например, 3-медиана .NET). Будут ли они табу?