Menu de tres opciones, que rellena un vector, lo ordena por metodo Burbuja y Quicksort (compara sus tiempos), y lo vuelve a generar cuantas veces se necesite experimentar mejorado (muestra el tiempo en milisegundos)

pascal:
uses
        crt,dos;
const
        max=10000;
type
        vector=array [1..max] of integer;
var
        opc:char;
        time1,time2,timeb,timeq:integer;
        c:integer;
        n:integer;
        qa,ba:vector;
        generado:integer;
        bh1,bm1,bs1,bms1:word;
        bh2,bm2,bs2,bms2:word;
        qh1,qm1,qs1,qms1:word;
        qh2,qm2,qs2,qms2:word;


procedure mostrar(arreglo:vector);
        var
                c:integer;
                x,y:integer;
        begin
                clrscr;
                x:=1;
                y:=1;
                for c:=1 to max do
                        begin
                                gotoxy(x,y);                   
                                writeln(arreglo[c]);
                                if y=23 then
                                        begin
                                                if (x<80)AND(x>75) then
                                                        begin
                                                                gotoxy(1,24);write('Presiona una tecla para continuar');
                                                                readkey;
                                                                clrscr;
                                                                x:=1;
                                                                y:=1;
                                                        end
                                                                else
                                                        begin
                                                                x:=x+4;
                                                                y:=1;
                                                        end;
                                        end
                                                else
                                        begin
                                                y:=y+1;
                                        end;
                        end;
        end;

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 (qa[pos]<=qa[der]) and (pos<>der) do
                                der:=der-1;
                  if pos=der then
                         band:=false
                  else
                          begin
                                   aux:=qa[pos];
                                   qa[pos]:=qa[der];
                                   qa[der]:=aux;
                                   pos:=der;
                                   while (qa[pos]>=qa[izq]) and (pos<>izq) do
                                                 izq:=izq+1;
                                   if pos=izq then
                                          band:=false
                                   else
                                           begin
                                                        aux:=qa[pos];
                                                        qa[pos]:=qa[izq];
                                                        qa[izq]:=aux;
                                                        pos:=izq;
                                           end;
                          end;
         end;{while}
end;

procedure quickit (v:vector; n:integer);
var
   top,ini,fin,pos:integer;
   pmay,pmen:vector;
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;

procedure qsort(arreglo:vector);
        begin
                quickit(arreglo,max);
                for c:=1 to max do
                        begin
                                ba[c]:=arreglo[c];
                                qa[c]:=arreglo[c];
                        end;
                {mostrar(arreglo);}
        end;

procedure bsort(arreglo:vector);
        var
                c1,c2,aux:integer;
        begin
                for c1:=1 to max do
                        for c2:=max downto c1 do
                                if arreglo[c2]>arreglo[c2+1] then
                                        begin
                                                aux:=arreglo[c2];
                                                arreglo[c2]:=arreglo[c2+1];
                                                arreglo[c2+1]:=aux;
                                        end;
                for c:=1 to max do
                        begin
                                ba[c]:=arreglo[c];
                                qa[c]:=arreglo[c];
                        end;
                {mostrar(arreglo);}
        end;

begin
        generado:=0;
        repeat
                clrscr;
                writeln('1.- Generar');
                writeln('2.- Ordenar');
                writeln('3.- Ver arreglo');
                opc:=readkey;
                case ord(opc) of
                                49:
                                begin
                                        clrscr;writeln('Opcion 1 - Generar');
                                        for c:=1 to max do
                                                begin
                                                        randomize;
                                                        ba[c]:=random(999);
                                                        qa[c]:=ba[c];
                                                end;
                                        mostrar(ba);
                                        generado:=1;
                                        readkey;
                                end;
                                50:
                                begin
                                        clrscr;writeln('Opcion 2 - Ordenar');
                                        if generado=1 then
                                                begin
                                                        gettime(bh1,bm1,bs1,bms1);time1:=(((bh1*3600)+(bm1*60)+bs1)*100)+bms1;
                                                        bsort(ba);
                                                        gettime(bh2,bm2,bs2,bms2);time2:=(((bh2*3600)+(bm2*60)+bs2)*100)+bms2;
                                                        timeb:=time2-time1;

                                                        gettime(qh1,qm1,qs1,qms1);time1:=(((qh1*3600)+(qm1*60)+qs1)*100)+qms1;
                                                        qsort(qa);
                                                        gettime(qh2,qm2,qs2,qms2);time2:=(((qh2*3600)+(qm2*60)+qs2)*100)+qms2;
                                                        timeq:=time2-time1;

                                                        writeln('Bubble sort: ',timeb,' mili segundos');
                                                        writeln('Quick sort: ',timeq,' mili segundos');

                                                        {
                                                        writeln('Bubble sort: ',bh1,':',bm1,':',bs1,':',bms1,' -> ',bh2,':',bm2,':',bs2,':',bms2);
                                                        writeln('Quick sort: ',qh1,':',qm1,':',qs1,':',qms1,' -> ',qh2,':',qm2,':',qs2,':',qms2);
                                                        }



                                                end
                                                        else
                                                begin
                                                        writeln('No hay vector generado');
                                                end;
                                        readkey;
                                end;
                                51:
                                begin
                                        clrscr;writeln('Opcion 3 - Ver arreglo');
                                        if generado=1 then
                                                        mostrar(ba)
                                                else
                                                        writeln('No hay vector generado');
                                        readkey;
                                end;
                        end;
        until ord(opc)=27;


end.
{
27 ESC
50 2
49 1
}

 
¿Ya le viste algún error? Dejanos tu correción ;-)

Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress elimina los tags HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios.

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

De esta manera el código sale coloreado.

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 último párrafo.

Para poner los símbolos de las librerías sin que desaparezcan, debes escribir los símbolos de mayor > y menor qué < con su entidad HTML correspondiente, así como el símbolo de &

Mis Algoritmos se reserva el derecho de alterar, publicar o no los comentarios así como cambiar estas reglas de uso.

Si estas de acuerdo, adelante puedes comentar :)

P.D. No le hago tareas a nadie, mejor hagan la mía :P