Insertion Sort


Insertion Sort adalah contoh lain dari metode pengurutan yang sederhana. Insertion Sort  adalah kebalikan dari buble sort yang mengurutkan data dari belakang, Insertion Sort mengurutkan data dari depan. Ambil dua data pertama, urutkan sesuai yang diinginkan. Lalu sisipkan data ketiga ditempat semestinya lalu sisipkan data keempat ditempat semestinya diantara 3 data sebelumnya dan begitu seterusnya sampai semua data selesai diurutkan.

Data Asli
Langkah 1
Langkah 2
Langkah 3
Langkah 4
Langkah 5
Data Urut
D
C
C
A
A
A
A
C­
D
A­
C
C
B
B
A
A­
D
D
B­
C
C
B
B
B
B­
D
D
D

Contoh 5.1

{ pengurutan insertion sort }
Program P009;
Uses crt;
var data : array [1..100] of integer;
    i,j,temp,jumlah : 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;
 for i:=1 to jumlah do
 begin
  temp:=data[i];
  j:=i-1;
  while (j>=1) and (temp<data[j]) do
   begin
    data[j+1]:=data[j];
    j:=j-1;
   end;
   data[j+1]:=temp;
 end;
 writeln;
 writeln('Data yang sudah terurut');
 for i:=1 to jumlah do
 begin
  write(data[i]);
 end;
readln;
end.


Latihan

1.       Buat program pengurutan insertion sort mulai dari nilai terbesar
2.       Perbaiki penggalan program pengurutan data mahasiswa menggunakan insertion sort berdasarkan nilai terkecil berikut :
datamhs = record
      NIM : string;
      Nama : string;
      Nilai : integer;
      end;
      siswa : array [1..100] of datamhs;
write(‘Masukan jumlah siswa : ‘);
      readln(jumlah);
      for I:=1 to jumlah do
clrscr;
      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 ‘);
      for I:=1 to jumlah do
      write(NIM,.Nama,siswa.Nilai);
for I:=1 to jumlah do
temp:=siswa[i].Nilai;
      j:=i-1;
      while(j>=0 and temp<siswa[j].Nilai)
      siswa[j+1].Nilai=siswa[j].Nilai;
        j:=j-1;
      siswa[j+1].Nilai=temp
write(‘Daftar Mahasiswa yang sudah terurut ‘);
      write("    NIM         NAMA      NILAI’);
      for I:=1; 
write(NIM,siswa[1].Nama,Nilai);

1 komentar:

Copyright © 2014 Dunia Naeta All Right Reserved