Quick Sort

program qsort;
uses
    crt;
const
     n=10;
type
    vec=array[1..n]of integer;
var
   v:vec;
   c:integer;
 
procedure quickredit(ini,fin:integer; var pos:integer);
var
   izq,der,aux:integer;
   band:boolean;
begin
     izq:=ini;
     der:=fin;
     pos:=ini;
     band:=true;
     while band=true do
     begin
          while (v[pos]<=v[der]) and (pos<>der) do
                der:=der-1;
          if pos=der then
             band:=false
          else
              begin
                   aux:=v[pos];
                   v[pos]:=v[der];
                   v[der]:=aux;
                   pos:=der;
                   while (v[pos]>=v[izq]) and (pos<>izq) do
                         izq:=izq+1;
                   if pos=izq then
                      band:=false
                   else
                       begin
                            aux:=v[pos];
                            v[pos]:=v[izq];
                            v[izq]:=aux;
                            pos:=izq;
                       end;
              end;
     end;{while}
end;
 
procedure quickit (v:vec; n:integer);
var
   top,ini,fin,pos:integer;
   pmay,pmen:vec;
begin
     top:=1;
     pmen[top]:=1;
     pmay[top]:=n;
     while top>0 do
     begin
          ini:=pmen[top];
          fin:=pmay[top];
          top:=top-1;
          quickredit(ini,fin,pos);
          if ini<(pos-1) then
          begin
               top:=top+1;
               pmen[top]:=ini;
               pmay[top]:=pos-1;
          end;
          if fin>(pos+1) then
          begin
               top:=top+1;
               pmen[top]:=pos+1;
               pmay[top]:=fin;
          end;
     end;{while}
end;
 
begin
     clrscr;
     for c:=1 to n do
     begin
          write('Dame un numero: ');
          readln(v[c]);
     end;
     quickit(v,n);
     writeln;
     writeln('Vector acomodado: ');
     for c:=1 to n do
     begin
          write(v[c],' ');
     end;
     readkey;
end.

¿Has encontrado algún error? ¿Tienes la solución? Dejame tu correción ;-)

Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por personas con únicamente conocimiento básico del lenguaje, no de programación.

Otro punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:

  • Si es lenguaje C [c]Código en C[/c]
  • Si es lenguaje Pascal [pascal]Aquí dentro el código de Pascal[/pascal].

De esta manera el código coloreas el código.

Otro punto importante para muchos que sienten que se les ignora: Todos los comentarios los reviso y en su debido momento los apruebo, pero ojo con el con lo siguiente:

Me reservo el derecho de alterar, publicar o no los comentarios as´ como cambiar mis condiciones en el momento que así lo requiera.

¿estas de acuerdo? entonces adelante que ya te he quitado bastante tiempo leyendo esta basura de advertencias :)