Pull to refresh

Comments 6

Спасибо за статью! Правда, все это в универе прошли — но задачки-минутки размять мозг всегда хороши :)
Спасибо тебе, автор. Хороший текст и хороший перевод. Прочитала все 4 статьи в качестве подготовки в собеседованию, и заодно поставила галочку напротив «узнать наконец-то про сложность алгоритмов».
Каждый раз при собеседовании меня спрашивают про сложность алгоритмов и каждый раз приходилось краснеть и мысленно ставить галочку «срочно разобраться в этой теме!». Ваши статьи очень помогли, огромное спасибо!
Спасибо за перевод статей!

Кажется, нашел опечатку у вас.
В этой функции вы считаете массив от 0-го элемента (то есть первый элемент имеет индекс 0)

def merge( A, B ):
    if empty( A ):
        return B
    if empty( B ):
        return A
    if A[ 0 ] < B[ 0 ]:
        return concat( A[ 0 ], merge( A[ 1...A_n ], B ) )
    else:
        return concat( B[ 0 ], merge( A, B[ 1...B_n ] ) )

Но в следующей функции первый элемент у вас под индексом 1, а не 0. leftHalf ведь нужно брать с 0-го элемента.

def mergeSort( A, n ):
    if n = 1:
        return A # it is already sorted
    middle = floor( n / 2 )
    leftHalf = A[ 1...middle ]
    rightHalf = A[ ( middle + 1 )...n ]
    return merge( mergeSort( leftHalf, middle ), mergeSort( rightHalf, n - middle ) )
Очень полезная серия статей. Спасибо за перевод! Помогает упорядочить, а то малость каша осталась в голове про тета, О и омега.
Only those users with full accounts are able to leave comments. Log in, please.