Push_swap is a program written in C that solves the sorting problem for two stacks named a
and b
. The goal is to sort the numbers in stack a
in ascending order using a specific set of operations. The program aims to find the smallest list of instructions to achieve the desired sorted state. The subject of the project can be found in this link.
-
The program is composed of 2 stacks named
a
andb
.- the stack
a
contains a random amount of negative and/or positive numbers which cannot be duplicated. b
is empty.
- the stack
-
The goal is to sort in ascending order numbers into stack
a
. -
To do this you have the following operations at your disposal:
sa
: swap a - swap the first 2 elements at the top of stacka
. Do nothing if there is only one or no elements).sb
: swap b - swap the first 2 elements at the top of stackb
. Do nothing if there is only one or no elements).ss
: sa and sb at the same time.pa
: push a - take the first element at the top of b and put it at the top ofa
. Do nothing ifb
is empty.pb
: push b - take the first element at the top ofa
and put it at the top ofb
. Do nothing ifa
is empty.ra
: rotate a - shift up all elements of stacka
by 1. The first element becomes the last one.rb
: rotate b - shift up all elements of stackb
by 1. The first element becomes the last one.rr
: ra and rb at the same time.rra
: reverse rotate a - shift down all elements of stacka
by 1. The last element becomes the first one.rrb
: reverse rotate b - shift down all elements of stackb
by 1. The last element becomes the first one.rrr
: rra and rrb at the same time.
To use the push_swap program, navigate to the files/ directory and run the following command::
make
Execute the program by providing the stack a
as command-line arguments:
./push_swap 2 1 3 6 5 8
The program will display the smallest list of instructions to sort the stack a
, with the smallest number at the top.