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);
Insertion Sort oke nih traffic nya :D
ReplyDelete