Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program trideni;
- uses graph, crt;
- const max = 1520;
- type POLE = array[1..MAX] of integer;
- rozpeti = 1 .. max;
- procedure swap(var A,B:integer);
- var help:integer;
- begin
- Help:= A; A:=B; B:=Help;
- end;
- procedure vytvor(out P:POLE);
- var i:rozpeti;
- begin
- for i:=1 to max do
- P[i]:= random(800);
- end;
- procedure vypis(P:POLE);
- var i:rozpeti;
- begin
- for i:=1 to max do
- write(P[i]:4);
- writeln
- end;
- procedure nakresli(P:POLE);
- var i:rozpeti;
- begin
- for I:=1 to max do
- line(I,800,I,800-P[I]);
- end;
- procedure select(var P:POLE);
- var i,j:rozpeti;
- begin
- for i:=2 to max do
- for j:=1 to i-1 do
- begin
- if P[J]>P[I] then swap(P[i],P[j]);
- end;
- end;
- procedure bubble(var P:POLE);
- var I,J:rozpeti;
- begin
- for J:=1 to max-1 do
- for i:=2 to max-j+1 do
- if P[I]<P[I-1] then swap(P[i],P[I-1])
- end;
- procedure insort(var P:POLE);
- var I,J,min:rozpeti;
- begin
- for J:=1 to max-1 do
- begin
- min:=J;
- for I:=J to max do
- begin
- if P[min]>P[i] then min:=i
- end;
- swap(P[J],P[min]);
- end;
- end;
- procedure gbubble(D:integer; var P:POLE);
- var I,J:rozpeti;
- begin
- nakresli(P);
- for J:=1 to max-1 do
- begin
- delay(D);
- for i:=2 to max-j do
- if P[I]<P[I-1] then
- begin
- setcolor(black);
- line(I,800,I,800-P[I]);
- line(I-1,800,I-1,800-P[I-1]);
- setcolor(white);
- swap(P[i],P[I-1]);
- line(I,800,I,800-P[I]);
- line(I-1,800,I-1,800-P[I-1]);
- end
- end;
- end;
- procedure gselect(D:integer; var P:POLE);
- var i,j:rozpeti;
- begin
- nakresli(P);
- for i:=2 to max do
- begin
- delay(D);
- for j:=1 to i-1 do
- begin
- if P[J]>P[I] then begin
- setcolor(black);
- line(I,800,I,800-P[I]); line(J,800,J,800-P[J]);
- setcolor(white);
- swap(P[i],P[j]);
- line(I,800,I,800-P[I]); line(J,800,J,800-P[J]);
- end
- end;
- end;
- end;
- procedure ginsort(d:integer; var P:POLE);
- var I,J,min:rozpeti;
- begin
- nakresli(P);
- for J:=1 to max-1 do
- begin
- delay(D);
- min:=J;
- for I:=J to max do
- begin
- if P[min]>P[i] then min:=i
- end;
- setcolor(black);
- line(J,800,J,800-P[J]); line(min,800,min,800-P[min]);
- setcolor(white);
- swap(P[J],P[min]);
- line(J,800,J,800-P[J]); line(min,800,min,800-P[min]);
- end;
- end;
- var P:POLE;
- i:rozpeti;
- gd, gm: smallint;
- volba:char;
- d:integer;
- begin
- gd:=detect;
- initgraph(gd,gm,'');
- randomize;
- setfillstyle(emptyfill,0);
- repeat
- vytvor(P);
- writeln('Vyber tridici algoritmus:');
- writeln('0 ... nic');
- writeln('1 ... bubble');
- writeln('2 ... Insort');
- writeln('3 ... selection sort');
- write('Tvoje volba: ');
- readln(volba);
- write('Delay: '); readln(D);
- bar(0,0,2000,max);
- case volba of
- '1':gbubble(D,P);
- '2':ginsort(D,P);
- '3':gselect(D,P);
- end;
- until volba = '0';
- readln
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement