Как реализовать алгоритм расстановки кораблей на поле?
Требуется случайная генерация?
1. определяешь случайным образом положение корабля
2. исключаешь занятые клетки с массива, если места нет а корабли есть - обнуляешь поле.
3. идешь к пункту 1, пока не расставишь все корабли.
Какой-то слишком общий вопрос. Вы непонимаете, как делать проверку на соседние пустые клетки в двумерном массиве? 
Создаете функцию, где по циклу или отдельными проверками делаете так:
if (myarray[x+1,y]==1)
{
    return false;
}
и проверяете для всех нужных размеров. Сократить тут можно немного.