для квадратичной, логарифмической и пару еще известных методов - оказывается вполне достаточно линейного подхода. О чем и написано в соответствующих учебниках.
Но что-бы понять, что это такое вообще (судя по вопросу, автор в этом не разбирается), неплохо бы начать с линейной.
На всякий случай, сразу видно, что у вас метод shot_by_ships весьма странный. Он только None может вернуть в лучшем случае.