Мне нужна помощь со следующей проблемой, которую я нашел в учебнике.Алгоритм сортировки с бесконечными свопами
sort (array[], nr_of_item)
{
while(true)
i:=value from an n-sided fair dice roll
j:=value from an n-sided fair dice roll
if (i > j)
swap i and j
if (array[i] > array [j])
swap array[i] and array[j]
end while
}
Теперь он говорит, что не описывает правильный алгоритм. Но тогда они говорят:
Через некоторое время массив должен быть отсортирован и доказать, что количество сравнений для сортировки массива равно O (n^3), если вход не сортирован.
Еще один вопрос:
проверить, если алгоритм сортировки массива в O (п)
Я действительно не могу понять, как вы могли бы доказать это из-за хаотичности I и J ,
Я думаю, это вероятностная вещь. По мере увеличения количества итераций вероятность того, что массив несортирована, уменьшается, и, вероятно, существует асимптотическая связь. – Barmar
, но здесь ваша петля работает бесконечно, я имею в виду, что останавливает или прерывает ваше время()? –
Он не предназначен для остановки. Алгоритм, приведенный в учебнике, неверен, потому что он никогда не останавливается. Но эти два вопроса должны по-прежнему отвечать. – user3143696