This project for sorting numbers using Quick sort algorithm (Wikipedia link) for 2 stacks with my own improvements
This project is about sorting numbers considering two stacks and using only the following instructions:
sa: swap a - swap the first 2 elements at the top of stack a . Do nothing if there is only one or no elements).sb: swap b - swap the first 2 elements at the top of stack b . 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 of a . Do nothing if b is empty.pb: push b - take the first element at the top of a and put it at the top of b . Do nothing if a is empty.ra: rotate a - shift up all elements of stack a by 1. The first element becomes the last one.rb: rotate b - shift up all elements of stack b 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 stack a by 1. The flast element becomes the first one.rrb: reverse rotate b - shift down all elements of stack b by 1. The flast element becomes the first one.rrr: rra and rrb at the same time
In worth cases θ(n x log(n)) - θ(n^2) - for simple quick sort
- For
100 numbersmax -700 instructions - For
500 numbersmax -5300 instructions
> make all
push_swap program for generate instruction set, checker program for check and test instruction set
To generate the set of instructions for a set of numbers:
> ./push_swap n1 n2 n3 n4 n5 n6 ...
and to check wether the set of instructions really sorts:
> ./push_swap n1 n2 n3... | ./checker n1 n2 n3 ...