методы класса ничем кроме области видимости от функций не отличаются. + пару спец переменных доступны.
конструктор помогает задать начальные значения объекта, деструктор завершить работу класса без необходимости самомы это делать. самый простой причер - закрытие открытого ресурса записи в файл.
циклом обходим массив:
если элемент влезает, то добавляем его и удаляем из массива
если элемент не влезает, то переносим элемент в конец массива и дополнительно сохраняем его значение/ключ в переменной
ну и обходим массив вложенным циклом пока не найдем подходящий элемент или не сделаем круг и не достигнем элемента который сохранен в переменной.