2017-01-25 25 views
0

У меня есть этот псевдокод, и я хочу, чтобы время анализа сложности этого алгоритма Но я не знаю об этомКак анализировать эту конкретную версию quicksort?

Proc Sort(A,l,r) 
if(r-l+1<4) 
    then Quicksort(A,l,r) 
    else 
    Sort(A,l,r-3) 
    Sort(A,l+3,r) 

Так что я знаю, что если элемент массива меньше 4 мы ее через быструю сортировку else мы уменьшаем размер массива на три, а затем передаем левую и правую часть. Итак, мы сделаем это нелепо, мы получим именно массив размера n < 4 проблема в том, что я не могу дождаться повторения, и я не уверен если этот алгоритм работает лучше в худшем случае анализа

Благодарим за помощь

+0

Существует много информации об этом в Интернете. И учебник. Просто выполните поиск. –

+0

У вас есть функция 'Sort', и из нее вы вызываете' sort' и 'Quicksort'. Что он? И у этого, похоже, нет базового футляра, поэтому похоже, что он будет работать вечно. – Carcigenicate

+0

Жаль, что это была моя ошибка, это функция рекурсии, которую я сделал правильно – amir

ответ

0

Ну, или нет на самом деле работает эта функция сортировки , способ выяснить время работы довольно легко здесь:

Вы записать математическое выражение для времени выполнения в зависимости от размера массива:

T (N) = ???

Ну, если N < = 4, то мы вызываем Quicksort. Теперь у нас нет определения функции, но независимо от этого, поскольку он будет когда-либо вызван с входом не более 4, мы можем обрабатывать его время работы как константу и просто называть его C.

И если N> = 4, мы снова вызываем Сорт, с массивами, которые на 3 меньше.

Итак:

Т (N) для N> = 4 равно 2 * Т (N-3).

Теперь на этом этапе вы должны предоставить всю необходимую информацию для анализа времени выполнения. Почему бы вам не попробовать отсюда и не вернуться к нам, когда застрянете?

+0

Большое вам спасибо Если я попытаюсь решить эту рекурсию, могу ли я использовать индукцию, чтобы показать, что T (n) = O (2^(N/3) -1)? – amir

+0

Звуки о правильном! – Lagerbaer

 Смежные вопросы

  • Нет связанных вопросов^_^