Código Bash – Ordenamiento Shell

El siguiente código trata del método de ordenamiento Shell en bash:

#!/bin/bash
function shell {
	lista=$1
	tam=${#lista[@]}

        for inc in $(seq 1 $[$[inc*3]+1] $[$tam-1]) ; do
            while [ $inc -gt 0 ] ; do
                  for i in $(seq $inc $[$tam-1]) ; do
                        j=$i
                        temp=${lista[$i]}
                        while [[ $j -ge $inc && ${lista[$[$j-$inc]]} -gt $temp ]] ; do
                                lista[$j]=${lista[$[$j-$inc]]}
                                j=$[$j-$inc]
                        done
                        lista[$j]=$temp
                  done
                  inc=$[$inc/2]
            done
        done
}

lista=(5 4 3 2 1)

shell $lista

for i in ${lista[@]};do	echo $i; done

Deja un comentario