Решение, которое они объяснили, заключается в том, чтобы всегда хранить только правильно отсортированные элементы. Если вы сделаете это для трех несортированных элементов, то после первой попытки у вас есть 1/6 шанса, что вы отсортируете их все (т.е. мы закончили после одного удара), 3/6 шанса, что вы отсортируете один из элементов (и вы нужно в среднем еще 2 удара) и 2/6 вероятности того, что ни один из них не будет отсортирован (и вам все еще нужно то же количество историй, что и при запуске). Это дает вам простую рекуррентную формулу, которая после оценки дает в среднем 3 хита для сортировки 3 несортированных элементов.
Тот факт, что ваша стратегия дает неправильный результат, означает, что это не лучшая стратегия.
Их решение не единственное, которое дает такие же результаты, но только самое простое. Другой возможный способ - хранить все отсортированные элементы (если они есть), а также некоторые несортированные. Но с условием, что все предметы, которые вы не держите, должны иметь возможность занять свои правильные позиции, не отпуская предметы, которые вы держите (или, другими словами, они должны образовать цикл (с) ) в перестановке).
Рассмотрим следующий пример:
1 3 2 5 6 4
Существует 5 несортированных элементов, поэтому решение Google займет в среднем 5 посещений.
1
отсортировано, поэтому мы должны его удержать. Если мы тоже удерживаем 5
, 6
и 4
, оставшиеся предметы (3
и 2
) могут добраться до своих правильных позиций. Когда мы это сделаем, они попадут в среднем в 2 хита. Теперь у нас есть 3 несортированных элемента, и мы можем отсортировать их в среднем за 3 хита. (Мы должны оставить их всех свободными, потому что они образуют один цикл.) Таким образом, этот подход, хотя и более сложный, так же быстр, как и исходный.