Ви пропускали, що ці тексти говорять про "найгірший очікуваний час роботи", а не про "найгірший час виконання".
Вони обговорюють реалізацію Quicksort, яка включає випадковий елемент. Зазвичай у вас є детермінований алгоритм, тобто алгоритм, який для даного вводу завжди створюватиме однакові кроки. Щоб визначити "найгірший термін виконання", ви вивчаєте всі можливі входи та вибираєте той, який виробляє найгірший час виконання.
Але тут у нас є випадковий фактор. Враховуючи деякий вхід, алгоритм не завжди буде робити однакові кроки, оскільки бере участь випадковість. Замість того, щоб мати час виконання для кожного фіксованого вводу, у нас є "очікуваний час виконання" - ми перевіряємо кожне можливе значення випадкових рішень та їх вірогідність, а "очікуваний час виконання" - це середньозважене середнє значення часу виконання для кожної комбінації випадкових рішень , але все ж для фіксованого входу.
Таким чином, ми обчислюємо "очікуваний час виконання" для кожного можливого введення, і щоб отримати "найгірший очікуваний час виконання", ми знаходимо один можливий вклад, де очікуваний час виконання найгірший. І, мабуть, вони показали, що найгірший випадок для "очікуваного часу виконання" - це просто O (n log n). Я не був би здивований, якби вибір випадковим першим стрижнем змінив найгірший очікуваний час виконання на o (n ^ 2) (маленький o замість Big O), тому що лише декілька з п півотрів призведуть до гіршого випадку поведінка.