Anda di halaman 1dari 20

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

ASCENDING DAN DESCENDING DENGAN INSERTION SORT



Dosen Pengampu : Nuryake Fajaryati, M.Pd










DISUSUN OLEH :
NAMA : DEWI WULANDARI
NIM : 12502244004




PROGRAM STUDI PENDIDIKAN TEKNIK ELEKTRONIKA
JURUSAN PENDIDIKAN TEKNIK ELEKTRONIKA
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
2014

A. Kompetensi
Mengenal dan memahami algoritma mengurutkan data descending dan ascending dengan
menggunakan insertion sort.

B. Sub Kompetensi
Dapat menyelesaikan suatu masalah dengan mengaplikasikan algoritma algoritma
mengurutkan data descending dan ascending dengan menggunakan insertion sort.

C. Dasar Teori
Pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang
lebih kecil, maka akan ditempatkan (diinsert) diposisi yang seharusnya. Pada penyisipan
elemen, maka elemen-elemen lain akan bergeser ke belakang.

D. Langkah Kerja
1. Pahami permasalahan yang diberikan dengan sebaik-baiknya.
2. Buatlah Algoritma baik dalam bentuk Narasi, Flow Chart, dan Pseudo Code untuk
menyelesaikan masalah yang diberikan.
3. Implementasikan algoritma yang anda buat ke dalam bentuk program sesuai dengan
bahasa pemrograman yang anda kuasai.

E. Pembahasan Bahan Diskusi
1. Membuat program mengurutkan data secara ascending menggunakan insertion sort.
Jawab :
a. Bahasa alamiah
Algoritma program utama
1. Mulai
2. Masukkan input jumlah data dan disimpan dalam variabel jml
3. Masukkan data sebanyak jumlah data input
4. Memanggil subrutin insertion sort
5. Tulis hasil sorting
6. Selesai
Algoritma Subrutin insertionsort
1. Menampilkan data awal dengan cara memanggil subrutin tampilkan.
2. Mengisi variabel i dengan indeks terkecil.
3. Mengisi variabel k (indeks data terkecil sementara) dengan i.
4. Membandingkan data dengan indeks k dengan data di atasnya. Saat data yang
dibandingkan lebih kecil dari data dengan indeks k maka k diganti dengan indeks
data yang lebih kecil tersebut. Langkah ini dilakukan sampai data terakhir.
5. Apakah posisi data terkecil berubah (i<>k).
6. Jika ya maka sisipkan data dengan indeks k ke posisi indeks i.
7. Menambah nilai i dengan 1.
8. Apakah i > dari jml(jumlah seluruh data)-1.
9. Jika tidak maka kembali ke langkah no 3.
10. Return.

Algoritma subrutin tampilkan
1. Menuliskan semua isi dari data array
2. Return

Algoritma subrutin geser (asal, tujuan)
1. Meyakinkan data dengan indeks asal menjadi variabel buff
2. Memindahkan semua data yang berindeks asal dengan tujuan ke indeks di atasnya
3. Mengisikan data indeks tujuan dengan data buff
4. Return

b. Flowchart

Gambar 1. Flowchart program utama

Gambar 2. Flowchart subrutin tampilkan

Gambar 3. Flowchart subrutin geser

Gambar 4. Flowchart subrutin insertionsort

c. Pseudocode
Algoritma : program ascending dengan insertion sort
Deklarasi :
input:real;
jml,i:byte;
data :array [1..100] of integer;

procedure geser (asal,tujuan : integer)
var buff,i: integer;
begin
buff:=data[asal];
for i:=asal downto tujuan +1 do
begin
data[i] := data[i-1];
end

data[tujuan] := buff;
end;

procedure tampilkan;
var i:byte;
begin
for i:=1 to jml do
write(data[i],' ');
writeln;
end;

procedure insertion_sort;
var i,j,k:byte;
begin
write('Data belum terurut : ');
tampilkan;
for i:= 1 to jml-1 do
begin
k:=i;
for j:=i+1 to jml do
if(data[k] > data[j]) then k:=j;
if (i<>k) then geser(k,i);
tampilkan;
end;
end;

begin
write(' Inputkan banyak data ');
read(jml);
for i:=1 to jml do
begin

Write(' Inputkan data ',i,' ');
readln(data[i]);
writeln;
writeln(Mengurutkan data secara ascending)
insertion_sort
write(Data sudah terurut : )
tampilkan;
end.

d. Program




e. Tampilan program



2. Membuat program mengurutkan data secara descending menggunakan insertion sort.
Jawab :
a. Bahasa alamiah
Algoritma program utama
1. Mulai
2. Masukkan input jumlah data dan disimpan dalam variabel jml
3. Masukkan data sebanyak jumlah data input
4. Memanggil subrutin insertion sort
5. Tulis hasil sorting
6. Selesai

Algoritma Subrutin insertionsort
1. Menampilkan data awal dengan cara memanggil subrutin tampilkan.
2. Mengisi variabel i dengan indeks terkecil.
3. Mengisi variabel k (indeks data terkecil sementara) dengan i.
4. Membandingkan data dengan indeks k dengan data di atasnya. Saat data yang
dibandingkan lebih besar dari data dengan indeks k maka k diganti dengan indeks
data yang lebih besar tersebut. Langkah ini dilakukan sampai data terakhir.
5. Apakah posisi data terkecil berubah (i<>k).
6. Jika ya maka sisipkan data dengan indeks k ke posisi indeks i.
7. Menambah nilai i dengan 1.
8. Apakah i > dari jml(jumlah seluruh data)-1.
9. Jika tidak maka kembali ke langkah no 3.
10. Return.

Algoritma subrutin tampilkan
1. Menuliskan semua isi dari data array
2. Return

Algoritma subrutin geser (asal, tujuan)
1. Meyakinkan data dengan indeks asal menjadi variabel buff
2. Memindahkan semua data yang berindeks asal dengan tujuan ke indeks di atasnya
3. Mengisikan data indeks tujuan dengan data buff
4. Return

b. Flowchart

Gambar 5. Flowchart program utama

Gambar 6. Flowchart subrutin tampilkan

Gambar 7. Flowchart subrutin geser

Gambar 8. Flowchart subrutin insertionsort

c. Pseudocode
Algoritma : program descending dengan insertion sort
Deklarasi :
input:real;
jml,i:byte;
data :array [1..100] of integer;

procedure geser (asal,tujuan : integer)
var buff,i: integer;
begin
buff:=data[asal];
for i:=asal downto tujuan +1 do
begin
data[i] := data[i-1];
end

data[tujuan] := buff;
end;

procedure tampilkan;
var i:byte;
begin
for i:=1 to jml do
write(data[i],' ');
writeln;
end;

procedure insertion_sort;
var i,j,k:byte;
begin
write('Data belum terurut: ');
tampilkan;
for i:= 1 to jml-1 do
begin
k:=i;
for j:=i+1 to jml do
if(data[k] < data[j]) then k:=j;
if (i<>k) then geser(k,i);
tampilkan;
end;
end;

begin
write(' Inputkan banyak data ');
read(jml);
for i:=1 to jml do
begin

Write(' Inputkan data ',i,' ');
readln(data[i]);
writeln;
writeln(Mengurutkan data secara descending)
insertion_sort
write(Data sudah terurut: )
tampilkan;
end.

d. Program




e. Tampilan running program


3. Membuat program mengurutkan data secara ascending menggunakan Exchange sort.
Jawab :
a. Bahasa alamiah
Algoritma program utama
1. Mulai
2. Inisialisasikan i = 0 dan j = 0
3. Ambil data pembanding dari indek j (data[j]).
4. Bandingkan data[j] dengan data[j+1]
5. Apakah data[j] > data[j+1].
Jika ya ke step 6, jika tidak langsung ke step 7.
6. Memanggil prosedur tukar.
7. Lakukan penambahan indeks j = j+1
8. Apakah nilai j = jumlah data 1?
Jika ya ke step 9, jika tidak, kembali ke step 3.
9. Lakukan penambahan indeks i = i+1
10. Apakah nilai i = jumlah data.
Jika ya ke step 11 , jika tidak, kembali ke step 3.
11. Selesai
b. Flowchart

c. Pseudocode
Algoritma : Mengurutkan data secara ascending dg exchange sort
Deklarasi :
a,b,c,d : integer;
q,r : integer;
i,j : integer;
data : array[1..4] of integer;

procedure tukar(var a,b:integer);
var c : integer;
begin
c:=a;
a:=b;
b:=c;
end;

procedure tampil(var c:integer);
var r : integer;
begin
c:= c+1;
write('step ke ',c,' : ');
for r:= 1 to 4 do
begin
write(data[r],' ');
end;
end;

begin
d:= 0;
for q:= 1 to 4 do
begin
write('Data ke ',q,' = ');
read(data[q]);
end;

for i:= 4 downto 2 do
begin
for j:= 1 to i-1 do
begin
if data[j]>data[j+1] then
begin
tukar(data[j],data[j+1]);
tampil(d);
end;
end;
end;
end.
d. Program
uses crt;
var
a,b,c,d:integer;
q,r:integer;
i,j:integer;
data:array[1..4] of integer;

procedure tukar(var a,b:integer);
var c:integer;
begin
c:=a;
a:=b;
b:=c;
end;

procedure tampil(var c:integer);
var r : integer;
begin
c:= c+1;
write('step ke ',c,' ==> ');
for r:= 1 to 4 do
begin
write(data[r],' ');
end;
end;

begin
d:= 0;
for q:= 1 to 4 do
begin
write('Data ke ',q,' = ');
read(data[q]);
end;

for i:= 4 downto 2 do
begin
for j:= 1 to i-1 do
begin
if data[j]>data[j+1] then
begin
tukar(data[j],data[j+1]);
writeln(' ');
tampil(d);
writeln(' ');
end;
end;
end;
end.


e. Tampilan running program