Вам не хватало того, что в этих текстах говорится о «наихудшем ожидаемом времени выполнения», а не «наихудшем времени выполнения».
Они обсуждают реализацию Quicksort, которая включает случайный элемент. Обычно у вас есть детерминированный алгоритм, то есть алгоритм, который для данного входа всегда будет производить одинаковые шаги. Чтобы определить «время выполнения в худшем случае», вы изучаете все возможные входные данные и выбираете тот, который дает худшее время выполнения.
Но здесь у нас есть случайный фактор. Учитывая некоторые входные данные, алгоритм не всегда будет делать одни и те же шаги, потому что это связано с некоторой случайностью. Вместо того, чтобы иметь время выполнения для каждого фиксированного ввода, у нас есть «ожидаемое время выполнения» - мы проверяем каждое возможное значение случайных решений и их вероятность, а «ожидаемое время выполнения» является средневзвешенным значением времени выполнения для каждой комбинации случайных решений , но все же для фиксированного ввода.
Таким образом, мы рассчитываем «ожидаемое время выполнения» для каждого возможного ввода, и чтобы получить «ожидаемое время выполнения в худшем случае», мы находим один возможный вход, где ожидаемое время выполнения является наихудшим. И, по-видимому, они показали, что наихудший случай для «ожидаемого времени выполнения» - это просто O (n log n). Я не удивлюсь, если простой случайный выбор первого стержня изменит наихудшее ожидаемое время выполнения на o (n ^ 2) (маленький o вместо большого O), потому что только несколько из n пивотов приведут к худшему случаю поведение.