MAHASISWA
DIMINTA UNTUK MEMBUAT SEBUAH PROGRAM UNTUK MENGURUTKAN ANGKA-ANGKA YANG DIDAPAT
SECARA RANDOM/ACAK. MULA-MULA DIDAPATKAN ENAM ANGKA SECARA RANDOM, LALU
ANGKA-ANGKA TERSEBUT HARUS DISUSUN SECARA URUT DENGAN MENGGUNAKAN METODE QUICK
SORT DIMULAI DARI ANGKA YANG TERKECIL. ANIMASIKANLAH PENGURUTAN DENGAN
MEMPERLIHATKAN PERPINDAHAN ANGKA-ANGKA SAMPAI ANGKA-ANGKA TERSEBUT TERSUSUN
SEMUANYA.
PROGRAM
URUT_QUICK;
USES CRT;
CONST MAX=6;
VAR
CH :
CHAR;
I,J :
BYTE;
DATA : ARRAY [1..MAX] OF INTEGER;
PROCEDURE GERAK
(K,D:BYTE);
VAR
X,Y,WARNA:BYTE;
BEGIN
X:= 28 + MAX + (K-1);
Y:= 34 + MAX + (D-2);
REPEAT
WARNA := RANDOM (15);
UNTIL WARNA IN [9..14];
TEXTCOLOR (WARNA+BLINK);
GOTOXY (X,13); WRITE (DATA[K]);
GOTOXY (Y,12); WRITE (DATA[D]); DELAY
(700);
TEXTCOLOR (WHITE);
GOTOXY (X,12); WRITE ('');
GOTOXY (Y,12); WRITE ('');
FOR I:= 1 TO 2 DO
BEGIN
GOTOXY (X,12-I); WRITE (DATA[K]);
GOTOXY (Y,12+I); WRITE (DATA[D]); DELAY
(50);
GOTOXY (X,12-I); WRITE ('');
GOTOXY (Y,12+I); WRITE ('');
END;
FOR I := 1 TO Y-X
DO
BEGIN
GOTOXY (X+I-1,10); WRITE ('',DATA[K]);
GOTOXY (Y-I,14); WRITE (DATA[D],'');
DELAY (50);
END;
GOTOXY (X,14); WRITE ('');
GOTOXY (Y,10); WRITE ('');
FOR I:= 1 TO 2 DO
BEGIN
GOTOXY (Y,10+I); WRITE (DATA[K]);
GOTOXY (X,14-I); WRITE (DATA[D]);
DELAY (50);
IF I <> 2 THEN
BEGIN
GOTOXY (Y,10+I); WRITE ('');
GOTOXY (X,14-I); WRITE ('');
END;
END;
END;
PROCEDURE CHANGE
(VAR A,B:INTEGER);
VAR C:INTEGER;
BEGIN
C:=A; A:=B; B:=C;
END;
PROCEDURE
QUICKSORT (LEFT,RIGHT:INTEGER);
VAR
I,J,MID: INTEGER;
BEGIN
I:=LEFT; J:=RIGHT; MID:=DATA [(LEFT+RIGHT)
DIV 2];
REPEAT
WHILE DATA [I] < MID DO INC (I);
WHILE MID < DATA [J] DO DEC (J);
IF I<J THEN
BEGIN
IF I<>J THEN GERAK (I,J);
CHANGE (DATA[I],DATA[J]);
INC(I); DEC(J);
END;
UNTIL I>J;
IF LEFT < J THEN QUICKSORT (LEFT,J);
IF I<RIGHT THEN QUICKSORT (I,RIGHT);
END;
PROCEDURE START;
VAR
K:BYTE;
BEGIN
DELAY (200);
CLRSCR;
FOR I:= 1 TO 3 DO
BEGIN
GOTOXY (1,10+I); WRITE ('');
DELAY (200);
END;
K:=0;
FOR j:=1 TO MAX DO
BEGIN
FOR I:= 1 TO 57-K DO
BEGIN
GOTOXY (I,12); WRITE ('',DATA[7-J]);
DELAY (10);
END;
K:=K + 6;
END;
K:=0;
FOR
I:=1 TO MAX DO
BEGIN
TEXTCOLOR (I+8); GOTOXY (28+K,12);
WRITE (DATA[I]);
DELAY(100);
INC (K,6);
END;
END;
PROCEDURE
CURSOR_OFF;ASSEMBLER;
ASM
MOV AH, 01H
MOV CX, 0FFFFH
INT 10H
END;
BEGIN
CLRSCR;
CURSOR_OFF;
RANDOMIZE;
GOTOXY (30,8); WRITE ('RANDOM 6 DATA YANG
AKAN DISORT:');
FOR I:=1 TO MAX DO
BEGIN
GOTOXY (30,9+I); WRITE ('DATA',I,':');
DATA [I]:=RANDOM (100);
GOTOXY (39,9+I); WRITELN (DATA[I]);
DELAY (100);
END;
DELAY (1000);
START;
QUICKSORT
(1,MAX);
J:=0;
FOR I:=1 TO MAX
DO
BEGIN
TEXTCOLOR (YELLOW);
GOTOXY (28+J,12); WRITE (DATA[I]);
DELAY (100);
J:=J+6;
END;
REPEAT
GOTOXY (32,22); WRITE ('PRESS ANY KEY TO
EXIT...');
UNTIL KEYPRESSED;
END.
Bagaimana outputnya nanti itu?
BalasHapus