This program was created by combining two forms of sorting. I first retrieved the longest increasing subsequence and then applied a median sort. A smart move algorithm then reduces the number of total moves by calculating which moves are the most optimal.
./push_swap (numbers to sort) | ./checker_linux (numbers to sort)
100 random numbers were sorted in 554 moves :
500 random numbers were sorted in 4832 moves :