2017-02-23 28 views
0

У меня есть алгоритм:Алгоритм рекурсии Сортировка

ALGORITHM F_min1(A[0..n-1]) 
//Input: An array A[0..n-1] of real numbers 
If n = 1 
    return A[0] 
else 
    temp ← F_minl(A[0..n-2]) 
    If temp ≤ A[n-1] 
     return temp 
    else 
     return A[n-1] 

Я подозреваю, что это сортирует массив, но я как точно не знаю. Я думаю, что он смотрит на минимальный элемент массива, кроме последнего, сравнивает их и печатает большую.

ответ

0

Почти; он возвращает меньше, не больше. Кроме того, он не сортирует массив вообще: он просто возвращает наименьший элемент.

На словах это читает что-то вроде:

If there is only one element, it must be the right one -- return it. 
Otherwise, 
    recur: find the smallest element in all but the last one. 
    compare the last element to that minimum; return the smaller one. 

Когда вы возвращаетесь весь путь до первого вызова, то есть наименьший элемент массива.

+0

Он возвращает только один элемент? Например, если массив равен 3 7 5 2 1. Он смотрит на 3 7 5 2, а затем сравнивает 2 с 1 и печатает 1. После этого он выглядит 3 7 5 и сравнивает 3 с 2 и печатает 2.So и т. Д.? –

+0

Вправо: это возвращает только наименьший элемент. Он никогда не изменяет исходный список и не создает новый список для возврата. – Prune

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