Hola vicentillo.
Oye aqui te mando el quiksort. Parte del hecho de que es mas facil ordenar dos vectores de n/2 posiciones que uno de n posiciones.
Este es recursivo y ordena el vector v que es de enteros. Si quieres el no recursivo dimelo.
proc Quiksort (v:tabla (1...N):entero, inf:entero, sup:entero)
var x:entero, p:entero, temp:entero fin var
inicio
si inf < sup entonces
p = (sup+inf) div 2
x = v(p)
repetir
mientras (v(inf) < x)
inf = inf + 1
fin mientras
mientras (v(sup > x)
sup = sup - 1
fin mientras
si (inf < sup) entonces
si (inf = p) entonces
p = sup
fin si
si (sup = p) entonces
p = inf
fin si
temp = v(inf)
v(inf) = v(sup)
v(sup) = temp
inf = inf + 1
sup = sup - 1
fin si
hasta (inf > sup)
Quiksort(v,inf,p)
Quiksort(v,p+1,sup)
fin si
fin inicio
Saludos.