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.
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

Copyright © 2014 Dunia Naeta All Right Reserved