Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 2

Хорошая статья. В отличии от многих статей про алгоритмы на хабре тут действитеньно объясняется "как" и "почему" а не "что", и статья не является лишь текстовой копией кода в стиле:

// Если значение отрицательное
if (x < 0) {
  y = 0;  // Присваеваем 0
}

Единественное замечаение: стоило бы заострить внимание, почему в последней версии сравниваются second_array[k] и first_array[i], ведь до этого сравнивались 2 значения в second_array.

Благодарю за комментарий! Вы правы, этот момент я несколько замял под ковёр.
В предпоследней версии сравнение second_array[l] < second_array[j] используется для поддержания возрастания подпоследовательности, однако в этом случае можно сравнивать и second_array[l] < first_array[i], т.к. внутри этого блока элементы первого и второго массивов равны.
В последней версии при заполнении строки i любой элемент second_array будет сравниваться с first_array[i] на равенство. То есть при равенстве first_array[i] == second_array[j] неравенства first_array[i] > second_array[k] и second_array[j] > second_array[k] будут эквивалентны. Поэтому, достаточно сравнения с first_array[i], потому что при встрече равного элемента из второго массива мы будем уверенны в возрастании подпоследовательности.
Надеюсь, что смог подробнее объяснить этот момент!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации