Google не перестает удивлять, из-за 29го я так понимаю? ;)
Перевод на Java - хорошая идея, после того, как вы приступите к работе, вы сможете просмотреть его, чтобы точно узнать, что делает алгоритм, если у вас возникают проблемы с его визуализацией.
Несколько указателей: код psuedo имеет индексированные массивы от 1
до n
, массивы Java индексируются от 0
до length - 1
. Ваши петли должны быть изменены, чтобы соответствовать этому. Также вы оставили приращения на своих циклах - i++
, j++
.
Создание b магического константного размера также не является хорошей идеей - если посмотреть на псевдокод, мы видим, что он записан не более n - 1
раз, так что это будет хорошей отправной точкой для его размера. Вы можете изменить его размер, чтобы он подходил к концу.
Окончательный совет, время алгоритма O (n 2 ). Это легко определить - внешний для цикла выполняется n раз, внутренний для цикла n / 2 раза, для общего времени выполнения (n * (n / 2)). Доминирует n * n, что и касается Big O, что делает его алгоритмом O (n 2 ).