Politeknik Elektronika Negeri Surabaya

dokumen-dokumen yang mirip
Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Gambar 1. Langkah-langkah pengurutan metode Insertion Sort (1)

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

A. TUJUAN PEMBELAJARAN

RESUME ALGORITMA MERGE SORT DAN REKURENS

Bab Tujuan. 6.2 Insertion Sort

Gambar 1. Single Linked List

Gambar 1. Single Linked List

Modul Praktikum 6 Pemograman Berorientasi Objek

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

A. TUJUAN PEMBELAJARAN

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

Gambar 13.1 Ilustrasi proses algoritma sorting

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Gambar 1. Single Linked List

Sorting. Selection Sort. Straight insertion Sort. Merge Sort Paradigma Divide-and-Conquer. Quicksort

Outline STRUKTUR DATA. VII. Sorting

Sorting Algorithms. Divide and Conquer

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

B. DASAR TEORI Array. Misalkan kita memiliki tiga data yang berbeda dan kita simpan dalam variabel yang berbeda.

A. TUJUAN PEMBELAJARAN

Agar lebih mudah mengerti, cobalah untuk melakukan hal-hal berikut ini: 1. Bacalah terlebih dahulu ide dasar dari masing-masing algoritma.

B.1 Mengurutkan Objek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

STRUKTUR DATA SORTING ARRAY

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA GENERIC DAN IMPLEMENTASI COMPARETO()

Objectives. Struktur Data & Algoritme (Data Structures & Algorithms) Sort. Outline. Bubble Sort: idea. Bubble Sort. Sorting

Gambar 1. Single Linked List

Sorting. Struktur Data dan Algoritma. Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) Fasilkom UI

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

MATERI PRAKTIKUM 2 ARRAY

Algoritma Sorting. Ahmad Kamsyakawuni, S.Si, M.Kom. Jurusan Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Jember

ALGORITMA PENGURUTAN & PENCARIAN

Sorting adalah proses mengatur sekumpulan objek menurut aturan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending = dari data kecil

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

int i = 0; while (i < 10) { System.out.println( Informatika Unpas ); i++; }

STRUKTUR DATA (3) sorting array. M.Cs

Politeknik Elektronika Negeri Surabaya

BAB VI Pengurutan (Sorting)

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

A. TUJUAN Mahasiswa diharapkan mampu : 1. Memahami Konsep Binary Search Tree 2. Mengimplementasaikan Binary Search Tree

Pertemuan 4 Halaman 1/1. Class Inheritance

B.1 Mengurutkan Objek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

B.1 Mengurutkan Obyek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

A. TUJUAN PEMBELAJARAN

MODUL 5 PERULANGAN A. WHILE

C. TUGAS PENDAHULUAN Buatlah resume 1 halaman mengenai Priority Queue dan berikan penjelasannya.!

ANALISA RUNNING TIME

MODUL PRAKTIKUM TI014 STRUKTUR DATA Season 1

DASAR PEMOGRAMAN JAVA

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Struktur Kontrol Pemrograman Java : PERCABANGAN

Arrays. Misalkan kita ingin menyimpan 100 buah integer Buat 100 variabel bertipe integer. Tidak efisien!

Modul Praktikum Bahasa Pemrograman 1

Tes Asisten Praktikum Alpro Lanjut

Algoritma Bubble Sort dan Quick Sort

Politeknik Elektronika Negeri Surabaya

MEMBUAT OBJECT COMPARABLE DAN COMPARATOR

BAB 5 PERULANGAN DAN ARRAY

Membuat Object Comparable

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 12 & 13

ALGORITMA DIVIDE AND CONQUER

2. Definisi Masalah Masalah yang akan dibahas dalam paper ini adalah mengetahui Comparison based

Powered by icomit.wordpress.com

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

Dasar Pemrograman Java

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA BUBBLE SORT, SELECTION SORT, INSERTION SORT

IKG2I4 / Software Project I

MODUL IV PENCARIAN DAN PENGURUTAN

ABSTRACT & INTERFACE. Pemrograman Lanjut Herman Tolle

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

Praktikum 6. Konsep Rekursi Perbandingan Perulangan biasa dan Rekursi Implementasi Rekursi dalam Bahasa C

MAKALAH ALGORITMA DIVIDE AND CONQUER

Tipe Data Floating Point Tipe data yng digunakan untuk menampung bilangan desimal

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

Bab 8. Dasar-Dasar OOP

A. TUJUAN PEMBELAJARAN 1. Memahami mengenai konsep rekursif 2. Mampu memecahkan permasalahan dengan konsep rekursif

Single Linked List (1)

Badiyanto, S.Kom., M.Kom. PBO java

Pengenalan Algoritma

Modul 8 SORTING (PENGURUTAN)

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

LAPORAN RESMI PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK (PBO) MODUL 5 INTERFACE

2 TIPE DATA DAN VARIABEL

MODUL PRAKTIKUM BASIS DATA PENGENALAN STRUKTUR DATA DAN KOMPLEKSITAS WAKTU

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

A. TUJUAN PEMBELAJARAN 1. Mengetahui cara menangani exception dengan cara melempar exception. 2. Mengetahui cara membuat sendiri class exception.

INTERAKSI ANTAR OBJECT

Gambar 1. Ilustrasi Stack

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-8 Pengurutan (Sorting) 1

Array Multidimensi. Pemrograman Dasar. Java

Transkripsi:

PRAKTIKUM 14 ALGORITMA PENGURUTAN (MERGE SORT) A. TUJUAN PEMBELAJARAN 1. Memahami step by step algoritma pengurutan merge sort. 2. Mampu mengimplementasikan algoritma pengurutan merge sort dengan berbagai macam parameter berupa tipe data primitif atau tipe Generic. 3. Mampu mengimplementasikan algoritma pengurutan merge sort secara ascending dan descending. B. DASAR TEORI Algoritma Merge Sort Merge sort merupakan algoritma pengurutan dalam ilmu komputer yang dirancang untuk memenuhi kebutuhan pengurutan atas suatu rangkaian data yang tidak memungkinkan untuk ditampung dalam memori komputer karena jumlahnya yang terlalu besar. Algoritma ini ditemukan oleh John von Neumann pada tahun 1945. Algoritma pengurutan data merge sort dilakukan dengan menggunakan cara divide and conquer yaitu dengan memecah kemudian menyelesaikan setiap bagian kemudian menggabungkannya kembali. Pertama data dipecah menjadi 2 bagian dimana bagian pertama merupakan setengah (jika data genap) atau setengah minus satu (jika data ganjil) dari seluruh data, kemudian dilakukan pemecahan kembali untuk masing-masing blok sampai hanya terdiri dari satu data tiap blok. Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama apakah data pertama lebih besar daripada data ke-tengah+1, jika ya maka data ke-tengah+1 dipindah sebagai data pertama, kemudian data ke-pertama sampai ke-tengah digeser menjadi data ke-dua sampai ke-tengah+1, demikian seterusnya sampai menjadi satu blok utuh seperti awalnya. Sehingga metode merge sort merupakan metode yang membutuhkan fungsi rekursi untuk penyelesaiannya. 100

Gambar 1. Contoh pengurutan menggunakan MergeSort Contoh penerapan atas sebuah larik/array dengan data yang akan diurutkan {6,3,5,1,8,2,4,7 ditunjukkan pada gambar 1. Pertama kali larik tersebut dibagi menjadi dua bagian, {6,3,5,1 dan {8,2,4,7. Larik {6,3,5,1 dibagi menjadi dua bagian yaitu, {6,3 dan {5,1. Larik {6,3 dibagi menjadi dua bagian yaitu, {6 dan {3. Selanjutnya karena {6 dan {3 sudah tidak bisa dibagi lagi maka di merge dan diurutkan menjadi {3,6. Larik {5,1 dibagi menjadi dua bagian yaitu, {5 dan {1. Selanjutnya {5 dan {1 dilakukan merge dan diurutkan menjadi {1,5. Larik {3,6 dan {1,5 dimerge dan diurutkan menjadi {1,3,5,6. Larik {8,2,4,7 dibagi menjadi dua bagian yaitu, {8,2 dan {4,7. Larik {8,2 dibagi menjadi dua bagian yaitu, {8 dan {2. Selanjutnya {8 dan {2 di merge dan diurutkan menjadi {2,8. Larik {4,7 dibagi menjadi dua bagian yaitu, {4 dan {7. Selanjutnya {4 dan {7 dilakukan merge dan diurutkan menjadi {4,7. Larik {2,8 dan {4,7 dimerge dan diurutkan menjadi {2,4,7,8. Larik {1,3,5,6 dan larik {2,4,7,8 dimerge dan diurutkan menjadi {1,2,3,4,5,6,7,8. C. TUGAS PENDAHULUAN Jelaskan algoritma pengurutan merge sort secara ascending dengan data 5 6 3 1 2 101

D. PERCOBAAN Percobaan 1 : Merge sort secara ascending dengan data int. public class MergeDemo { private int[] array; private int[] tempmergarr; private int length; public MergeDemo(int[] array) { this.array = array; this.length = array.length; this.tempmergarr = new int[length]; public void mergesort(int lowerindex, int higherindex) { if (lowerindex < higherindex) { int middle = lowerindex + (higherindex - lowerindex) / 2; // Below step sorts the left side of the array mergesort(lowerindex, middle); // Below step sorts the right side of the array mergesort(middle + 1, higherindex); // Now merge both sides mergeparts(lowerindex, middle, higherindex); private void mergeparts(int lowerindex, int middle, int higherindex) { for (int i = lowerindex; i <= higherindex; i++) { tempmergarr[i] = array[i]; int i = lowerindex; int j = middle + 1; int k = lowerindex; while (i <= middle && j <= higherindex) { if (tempmergarr[i] <= tempmergarr[j]) { else { array[k] = tempmergarr[j]; j++; while (i <= middle) { 102

public void tampil() { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); System.out.println(); public class MainMerge { int[] inputarr = {45, 23, 11, 89, 77, 98, 4, 28, 65, 43; MergeDemo mms = new MergeDemo(inputArr); Percobaan 2 : Merge sort secara descending dengan data int. public class MergeDemo { private int[] array; private int[] tempmergarr; private int length; public MergeDemo(int[] array) { this.array = array; this.length = array.length; this.tempmergarr = new int[length]; public void mergesort(int lowerindex, int higherindex) { if (lowerindex < higherindex) { int middle = lowerindex + (higherindex - lowerindex) / 2; // Below step sorts the left side of the array mergesort(lowerindex, middle); // Below step sorts the right side of the array mergesort(middle + 1, higherindex); // Now merge both sides mergeparts(lowerindex, middle, higherindex); private void mergeparts(int lowerindex, int middle, int higherindex) { for (int i = lowerindex; i <= higherindex; i++) { tempmergarr[i] = array[i]; int i = lowerindex; int j = middle + 1; int k = lowerindex; 103

while (i <= middle && j <= higherindex) { if (tempmergarr[i] >= tempmergarr[j]) { else { array[k] = tempmergarr[j]; j++; while (i <= middle) { public void tampil() { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); System.out.println(); public class MainMerge { int[] inputarr = {45, 23, 11, 89, 77, 98, 4, 28, 65, 43; MergeDemo mms = new MergeDemo(inputArr); E. LATIHAN 1. Buatlah class MergeDemo2, copy program pada percobaan 1, lakukan modifikasi pada program tersebut dengan menggunakan tipe Generic. public class MergeDemo2<T extends Number> { Ujilah program tersebut dengan public class MainMerge2 { Double[] inputarr = {45.4, 23.1, 11.4, 89.1, 77.9, 98.7, 4.2, 28.6, 65.8, 43.9; MergeDemo2 mms = new MergeDemo2(inputArr); 104

2. Buatlah class MergeDemo3, copy program pada percobaan 1, lakukan modifikasi pada program tersebut dengan menggunakan tipe Generic. public class MergeDemo3<T extends Comparable> { Ujilah program tersebut dengan public class MainMerge3 { String inputarr []= {"jeruk","anggur","belimbing","jambu","kelengkeng"; MergeDemo3 mms = new MergeDemo3(inputArr); 3. Buatlah class Mahasiswa dengan variable nrp dan nama yang memiliki tipe String! Class Mahasiswa mengimplementasikan interface Comparable, selanjutnya implementasikan fungsi abstract compareto(), untuk membandingkan dua objek mahasiswa berdasarkan nrp. public class Mahasiswa implements Comparable <Mahasiswa> { private String nrp ; private String nama ; @Override public int compareto(mahasiswa o) { @Override public String tostring() { Ujilah program pada soal no 2 dengan public class MainMerge4 { Mahasiswa inputarr[] = {new Mahasiswa("02", "Budi"), new Mahasiswa("01", "Andi"), new Mahasiswa("04", "Udin"), new Mahasiswa("03", "Candra"); MergeDemo3 mms = new MergeDemo3(inputArr); 105

F. LAPORAN RESMI Kerjakan hasil percobaan(d) dan latihan(e) di atas dan tambahkan analisa. 106