Ce projet vous demande de trier des données dans une pile en utilisant un ensemble limité d'instructions, et avec le moins d'opérations possibles.
Pour le réussir, vous devrez manipuler différents algorithmes de tri et choisir la solution la plus appropriée pour un classement optimal des données.
Les algorithmes de tri et leur complexité sont des sujets classiques lors des entretiens d'embauche. Profitez de cette occasion pour approfondir sérieusement vos connaissances.
Les objectifs de ce projet incluent la rigueur, la pratique du langage C et l'utilisation d'algorithmes élémentaires, en particulier la compréhension de leur complexité.
Trier des valeurs est simple, mais les trier le plus rapidement possible est plus complexe, car un même algorithme de tri peut ne pas être le plus efficace d'une configuration d'entiers à une autre.
Instruction | Description |
---|---|
sa (swap a) |
Intervertit les 2 premiers éléments au sommet de la pile a |
sb (swap b ) |
Intervertit les 2 premiers éléments au sommet de la pile b |
ss |
sa et sb en même temps |
pa (push a) |
Prend le premier élément au sommet de b et le met sur a |
pb (push b) |
Prend le premier élément au sommet de a et le met sur b |
ra (rotate a) |
Le premier élément de la pile a devient le dernier |
rb (rotate b) |
Le premier élément de la pile b devient le dernier |
rr |
ra et rb en même temps |
rra (reverse rotate a) |
Le dernier élément de la pile a devient le premier |
rrb (reverse rotate b) |
Le dernier élément de la pile b devient le premier |
rrr |
rra et rrb en même temps |
Visualieur ici
sudo apt update -y
sudo apt install -y gcc
sudo apt install -y make
mkdir -p $HOME/.local/bin
mkdir -p $HOME/.local/src
mkdir -p $HOME/.local/include
name=pushswap
git clone https://github.com/Skalyaeve/push_swap.git $name
cd $name && make && make clean
ln -s $PWD/$name $HOME/.local/bin/$name
ln -s $PWD/src $HOME/.local/src/$name
ln -s $PWD/include $HOME/.local/include/$name
export PATH=$HOME/.local/bin:$PATH
pushswap <numbers>
name=pushswap
rm -rf $name
rm $HOME/.local/bin/$name
rm $HOME/.local/src/$name
rm $HOME/.local/include/$name