Даны 2 стека. Один пустой, в другом лежит случайный набор чисел, который подается на вход в программу. Надобно отсортировать числа в первом стеке за оптимальное количество операций. Операции, которые можно проводить с числами четко заданы в сабжекте. (Сдвиг всех элемнтов на 1 вниз/вверх, свап элементов в топе стека и т.д) Оптимальность алгоритма сортировки указана в чек-листе, он также прилагается к проекту и находится в папке "subject".
Так как в задании заданы свои четкие правила игры, мною было решено самому придумать алгоритм сортировки, хоть это было и рискованно. (Можно было бы взять готовый алгоритм даже для этой задачи, т.к все уже есть на гите, но я понимал, что итак смогу повторить его как обезьянка...)
- Придумать простейший способ сортировки, не заботясь об оптимизации, но должна быть стопроцентная гарантия, что все числа будут отсортированы.
- Тестим, при различных кейсах, правильно ли я написал сам код.
- Проверяем, насколько плох наш простейший код с точки зрения количества операций, затраченных на сортировку.
- Анализируем и замечаем закономерности, говорящие нам о том, почему наш код плох.
- Поняв причины, начинаем улучшать наш алгоритм, обязательно тестируем наши идеи! (Кажущееся улучшение, может стать ухудшением программы...)
- Исчерпав все вдохновение и реализовав все идеи, тестируем финальную версию на оптимальность!