Maximum Sort
Maximum Sort adalah contoh lain dari metode pengurutan yang sederhana. Proses Maximum sort lebih menitikberatkan pada pencarian nilai maksimum yang disimpan pada akhir array dan pengulangan terhadap pencarian nilai maksimum berikutnya dilakukan sampai ke akhir array minus 1. Secara algoritma pengurutan ini jauh lebih cepat karena hanya terjadi satu kali proses perpindahan data untuk setiap satu nilai maksimum.
Contoh 6.1
Data Asli
|
Langkah 1
|
Langkah 2
|
Langkah 3
|
Data Urut
|
D↓
|
B↓
|
C↓
|
A
|
A
|
C
|
C
|
B
|
B
|
B
|
A
|
A
|
A
|
C
|
C
|
B
|
D
|
D
|
D
|
D
|
Contoh 6.1
{ pengurutan maximum sort }
Program P010;
uses crt;
var data: array [1..100] of
integer;
i,j,temp,jumlah: integer;
imax,tempjum,max: integer;
begin
clrscr;
write('Masukan jumlah data : ');
readln(jumlah);
for i:=1 to jumlah do
begin
write('Masukan data ke- ',i,' : ');
readln(data[i]);
end;
clrscr;
writeln('Data yang belum terurut');
for i:=1 to jumlah do
begin
write(data[i]);
end;
tempjum:=jumlah;
for i:=1 to jumlah do
begin
imax:=1;
max:=data[1];
for j:=1 to tempjum do
begin
if (data[j]>max) then
begin
max:=data[j];
imax:=j;
end;
end;
temp:=data[tempjum];
data[tempjum]:=data[imax];
data[imax]:=temp;
tempjum:=tempjum-1;
end;
writeln;
writeln('Data yang sudah terurut');
for i:=1 to jumlah do
begin
write(data[i]);
end;
readln;
end.
Latihan
1.
Perbaiki
penggalan program pengurutan data mahasiswa menggunakan maksimum sort
berdasarkan nilai terbesar berikut :
datamhs = record
NIM
: string;
Nama
: string;
Nilai
: integer;
siswa: array [1..100] of integer;
write(‘Masukan jumlah
siswa : ‘);
readln(jumlah);
for
I:=1 jumlah do
write("Mahasiswa
ke- ",i);
write("Masukan
NIM : ");readln(siswa[i].NIM);
write("Masukan
Nama : "); readln (siswa[i].Nama);
write("Masukan
Nilai : "); readln (siswa[i].Nilai);}
write(‘Daftar
Mahasiswa yang belum terurut ‘);
write(‘ NIM
NAMA NILAI \n’);
for I:=1 to jumlah
write(NIM,siswa[i].Nama,Nilai);}
tempjum:=jumlah;
for
I:=1 to jumlah do
imax:=0;
max=siswa[1].Nilai;
for j:=1 to tempjum do
if (siswa[j].Nilai>max)
max=siswa[j].Nilai;
imax=j;
temp:=siswa[tempjum-1].Nilai;
siswa[tempjum-1].Nilai=siswa[imax].Nilai;
siswa[imax].Nilai=temp;
tempjum:=tempjum-1;
write(‘Daftar Mahasiswa
yang sudah terurut ‘);
write(‘ NIM
NAMA NILAI ‘);
for
I:=1 to jumlah do
write(siswa.NIM,siswa.Nama,Nilai);
0 komentar:
Post a Comment