tugassda.docx

8
TUGAS INDIVIDU STRUKTUR DATA DAN ALGORITMA Disusun oleh : Nama : Olivia Safitri NPM : (G1A014046) Dosen Pembimbing : Ernawati, ST., M.Cs PROGRAM STUDI TEKNIK INFORMATIKA

Upload: oliviasafitri

Post on 23-Dec-2015

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: tugasSDA.docx

TUGAS INDIVIDU

STRUKTUR DATA DAN ALGORITMA

Disusun oleh :

Nama : Olivia Safitri

NPM : (G1A014046)

Dosen Pembimbing :

Ernawati, ST., M.Cs

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNIK

UNIVERSITAS BENGKULU

2015

Page 2: tugasSDA.docx

Proses sorting dengan Insertion Sort

Insertion sort adalah sebuah metode pengurutan data dengan menempatkan setiap elemen

data pada pisisinya dengan cara melakukan perbandingan dengan data–data yang ada. Indeks

algoritma dari metode insertion sort ini dapat dianalogikan sama seperti mengurutkan kartu,

dimana jika suatu kartu dipindah tempatkan menurut posisinya, maka kartu yang lain akan

bergeser mundur atau maju sesuai kondisi pemindahanan kartu tersebut. Dalam pengurutan data,

metode ini dipakai bertujuan untuk menjadikan bagian sisi kiri array terurutkan sampai dengan

seluruh array diurutkan. Penganalogian Insertion Sort dengan pengurutan kartu. Berikut

menjelaskan bagaimana algoritma Insertion Sort bekerja dalam pengurutan kartu, Anggaplah kita

ingin mengurutkan satu set kartu dari kartu yang bernilai paling kecil hingga yang paling besar.

Dimulai dengan posisi tangan kosong, dan semua kartu berada diatas meja. Dan anggaplah kita

akan menyusun kartu ke tangan kiri kita. Pertama, ambil kartu pertama dari meja dan letakkan ke

tangan kiri. Lalu ambil kartu kedua dan bandingkan dengan kartu yang sudah ada di tangan kiri.

Jika kartu yang diambil dari meja memenuhi syarat perbandingan, maka kartu tersebut akan

diletakan didepan kartu yang dibandingkan, serta kartu yang lain yang telah dibandingkan akan

bergeser mundur (ke belakang). Proses ini akan berlangsung sampai semua kartu terurut dengan

benar.

Contoh program :

Sourcecode:

import java.util.Scanner;

public class tgsSDA {

public static void main(String[] args) {

Scanner show = new Scanner(System.in);

System.out.println("Program pengurutan insertion data secara"+"\n1. Ascending"+"\n2.

Descending");

int x=0;

while(x<3){

System.out.print("inputkan pilihan : ");

Page 3: tugasSDA.docx

int pil = show.nextInt();

switch(pil){

case 1: System.out.print("Inputkan jumlah data : ");

int a = show.nextInt();

int dt[] = new int[a];

for(int i = 0; i < a; i++){

System.out.print("inputkan angka : ");

dt[i]= show.nextInt();}

for(int j=1;j<a;j++){

int asc = dt[j];

int b = j;

while(b > 0 && dt[b-1] >= asc) {

dt[b] = dt[b-1];

b--;}

dt[b] = asc;}

System.out.println("setelah diurutkan :");

for(int k = 0; k <a; k++){

System.out.print(dt[k]+" ");}

System.out.println("\n");

break;

case 2: System.out.print("Inputkan jumlah data : ");

int m = show.nextInt();

int d[] = new int[m];

for(int i = 0; i < m; i++){

System.out.print("inputkan angka : ");

d[i]= show.nextInt();}

for(int j=1;j<m;j++){

int dsc = d[j];

int b = j;

while(b > 0 && d[b-1] < dsc) {

d[b] = d[b-1];

Page 4: tugasSDA.docx

b--;}

d[b] = dsc;}

System.out.println("Setelah diurutkan :");

for(int k = 0; k <m; k++){

System.out.print(d[k]+" ");}

System.out.println("\n");

break;

default:

System.exit(0);

}

x++;}}}

Output :

Page 5: tugasSDA.docx

Penjelasan :

Proses sorting pada program diatas menggunakan metode insertion sort. Dimana terdapat dua

pilihan proses sorting yaitu ascending (naik) dan descending (turun). Pada case 1 dilakukan proses

ascending dan case 2 akan dilakukan proses secara descending. Dan pada default yaitu ketika inputan

selain 1 dan 2 maka secara otomatis user akan keluar dari program (System.exit(0)).

Pada case 1 (ascending), dilakukan penginputan jumlah data. Pada output jumlah data

yang dimasukkan yaitu 4. Maka dilakukan perulangan for (for(int i = 0; i < a; i++)) untuk

menginputkan angka sebanyak 4 kali dan disimpan dalam array dt[] (int dt[] = new int[a];).

Kemudian pada perulangan kedua (for(int j=1;j<a;j++)) akan dilakukan proses sorting secara

ascending dimana variabel asc merupakan data dalam array dt[j] = {4,2,7}. Dimana dalam

perulangan for ini terdapat fungsi while yang akan diproses jika while(b > 0 && dt[b-1] >=

asc) maka terjadi pergeseran data (dt[b] = dt[b-1]). Dan perulangan terus dilakukan pada data

disebelah kiri hingga angka berada pada urutan data yang benar sesuai syarat pada while. Data

yang telah terurut akan ditamplkan kembali dengan fungsi for (for(int k = 0; k <a; k++)).

Berikut simulasi proses sorting secara ascending : while(b > 0 && dt[b-1] >= asc)

3 4 2 7

Karena 4 > 0 dan 3 < 4 maka syarat nya tidak terpenuhi dan tidak terjadi pergeseran data array.

3 4 2 7

Kemudian data indeks ke-2 (2) > 0 dan 4 > = 2 maka syarat terpenuhi dan terjadi pergeseran

data dimana data dalam indeks ke-2 pindah ke indeks ke-1 sedangkan 4 pindah ke indeks ke-2.

Kemudian dilakukan perulangan kembali dimana 2 > 0 dan 3 > = 2 maka 2 pindah ke indeks 1

dan 3 pindah ke indeks ke-2.

2 3 4 7

Pada proses akhir 7 > 0 dan 4 < 7 maka tidak terjadi pergeseran data. Karena data pada indeks

ke-2 dan ke- sudah terurut maka 7 tidak tibandingkan lagi dengan data sebelumnya yang sudah

Page 6: tugasSDA.docx

teurut. Dan itulah kenapa metode insertion lebih bisa menghemat waktu saat proses pengurutan

data.

Pada case 2 proses yang dilakukan sama hanya berbeda syarat pada fungsi while yaitu

while(b > 0 && d[b-1] < dsc). Berikut simulasi sorting secara descending :

4 7 6

Karena 7 > 0 dan 4 < 7 maka syarat terpenuhi dan terjadi pergeseran data sehingga 7 pindah ke indeks

ke-0 dan 4 pindah ke indeks ke-1.

7 4 6

Kemudian 6 > 0 dan 4 < 6 maka 6 pindah ke indeks ke-1 dan 4 pindah ke indeks ke-2.

7 6 4

Kemudian 6 > 0 dan 7 > 6 maka syarat tdak terpenuhi dan tidak terjadi pergeseran data karena data

sudah terurut.