Politeknik Elektronika Negeri Surabaya

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

A. TUJUAN PEMBELAJARAN

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Outline STRUKTUR DATA. VII. Sorting

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

A. TUJUAN PEMBELAJARAN

Modul Praktikum 6 Pemograman Berorientasi Objek

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

BAB V SORT. Proses penukaran tidak dapat langsung dilakukan dengan cara : nilai[1] = nilai[2]; nilai[2] = nilai[1];

BAB VI Pengurutan (Sorting)

Gambar 1. Single Linked List

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

Bab Tujuan. 6.2 Insertion Sort

Gambar 1. Single Linked List

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Politeknik Elektronika Negeri Surabaya

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

BAB 8 SORTING DAN SEARCHING

7. SORTING DAN SEARCHING

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

Gambar 1. Single Linked List

Sorting Algorithms. Divide and Conquer

SORTING. Brigida Arie Minartiningtyas, M.Kom

Modul Praktikum Algoritma dan Struktur Data

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

Modul 8 SORTING (PENGURUTAN)

Alpro & Strukdat 1 C++ (Sorting) Dwiny Meidelfi, M.Cs

Algoritma Bubble Sort dan Quick Sort

STRUKTUR DATA SORTING ARRAY

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

Bubble Sort dan Selection Sort di Java Console

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

A. TUJUAN PEMBELAJARAN

Gambar 13.1 Ilustrasi proses algoritma sorting

Algoritme dan Pemrograman

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

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

SORTING (Pengurutan)

ALGORITMA PENGURUTAN & PENCARIAN

STRUKTUR DATA (3) sorting array. M.Cs

Metode Insertion Sort di Java Console

Sorting. Pertemuan ke 14.

SORTING (BAGIAN II) Proses kelima

Metode Binnary Searching di Java Console

PENGURUTAN (SORTING) 1. Introduction 2. Bubble Sort 3. Selection Sort 4. Insertion Sort

Kompleksitas Algoritma Sorting yang Populer Dipakai

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

MODUL PRAKTIKUM BASIS DATA PENGENALAN STRUKTUR DATA DAN KOMPLEKSITAS WAKTU

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

Menghitung Inversion Pada Barisan Dengan Menggunakan Modifikasi Bubble Sort, Insertion Sort, dan Merge Sort

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

PENGURUTAN (SORTING) 1. Overview

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

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

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

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

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

PERTEMUAN 10 METODE DEVIDE AND CONQUER

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

Praktikum 9. Pengurutan (Sorting) Quick Sort, Merge Sort

Gambar 1. Single Linked List

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

Pengurutan (Sorting) Algoritma Pemrograman

Silsilah keluarga Hasil pertandingan yang berbentuk turnamen Struktur organisasi dari sebuah perusahaan. B.1 Pohon Biner (Binary Tree)

1. Algoritma Searching

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Sorting. Quick Sort

ARRAY, SORTING & SEARCHING

12/26/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Sorting. Data untuk sorting. Contoh. Algoritme #1: BUBBLE SORT.

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

TELAAH WAKTU EKSEKUSI PROGRAM TERHADAP KOMPLEKSITAS WAKTU ALGORITMA BRUTE FORCE DAN DIVIDE AND CONQUER DALAM PENYELESAIAN OPERASI LIST

Belajar Rekursif di Java

PERTEMUAN 10 METODE DEVIDE AND CONQUER

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

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

Kuliah ke : 4 Algoritma & Stuktur Data. Pengurutan (Sorting)

Pengurutan (Sorting) Keuntungan Data Terurut. Pengurutan Terbagi Dua Kelompok:

ANALISA RUNNING TIME

Insertion Sort Dengan Algoritma Divide And Conquer

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

SORTING ARRAY FAKULTAS TEKNOLOGI INFORMASI UNISBANK SEMARANG : ANDY KRISTIANTO : Disusun Oleh :

BAB I PENDAHULUAN.

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

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

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

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

Nama : Suseno Rudiansyah NPM : Kelas : X2T Prodi : Teknik Informatika Tugas : Kuis Algoritma 2

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

Percabangan & Perulangan

LAPORAN PRAKTIKUM SEMENTARA ALGORITMA & STRUKTUR DATA 1

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

A. TUJUAN PEMBELAJARAN 1. Memahami konsep dan operasi pada Stack. 2. Mampu mengimplementasikan struktur data Stack pada array dan List.

ANALISIS PERBANDINGAN ALGORITMA BUBBLE SORT, MERGE SORT, DAN QUICK SORT DALAM PROSES PENGURUTAN KOMBINASI ANGKA DAN HURUF

Pertemuan 4 Halaman 1/1. Class Inheritance

Transkripsi:

PRAKTIKUM 13-14 ALGORITMA PENGURUTAN (QUICK DAN MERGE) A. TUJUAN PEMBELAJARAN 1. Memahami mengenai algoritma pengurutan quick sort dan merge sort. 2. Mampu mengimplementasikan algoritma pengurutan quick sort dan merge sort secara ascending dan descending. B. DASAR TEORI 1. Algoritma Quick Sort Metode quick sort dikembangkan oleh C.A.R Hoare.Secara garis besar metode ini dijelaskan sebagai berikut. Misalnya kita ingin mengurutkan data A yang mempunyai N elemen. Kita pilih sembarang elemen dari data tersebut, bisanya elemen pertama, misalnya X. kemudian semua elemen tersebut disusun dengan menempatkan X pada posisi J sedemikian rupa sehingga elemen ke 1 sampai ke J 1 mempunyai nilai lebih kecil dari X dan elemen J+1sampai ke N mempunyai nilai lebih besar dari X. Sampai saat ini kita sudah mempunyai dua sub data (kiri dan kanan). Langkah berikutnya diulang untuk setiap sub data. Gambar 1. Pengurutan data menggunakan algoritma Quick Sort 100

2. Algoritma Merge Sort Algoritma merge ini disesuaikan untuk mesin drive tape. Penggunaannya dalam akses memori acak besar yang terkait telah menurun, karena banyak aplikasi algoritma merge yang mempunyai alternatif lebih cepat ketika kamu memiliki akses memori acak yang menjaga semua data mu.hal ini disebabkan algoritma ini membutuhkan setidaknya ruang atau memori dua kali lebih besar karena dilakukan secara rekursif dan memakai dua tabel. Algoritma merge sort membagi tabel menjadi dua tabel yang sama besar. Masingmasing tabel diurutkan secara rekursif, dan kemudian digabungkan kembali untuk membentuk tabel yang terurut.implementasi dasar dari algoritma merge sort memakai tiga buah tabel, dua untuk menyimpan elemen dari tabel yang telah di bagi dua dan satu untuk menyimpan elemen yang telah terurut.namun algoritma ini dapat juga dilakukan langsung pada dua tabel, sehingga menghemat ruang atau memori yang dibutuhkan. Algoritma Merge umumnya memiliki satu set pointer p 0..n yang menunjuk suatu posisi di dalam satu set daftar L 0..n.Pada awalnya mereka menunjuk item yang pertama pada setiap daftar. Algoritmanya sebagai berikut: Selama p 0..n masih menunjuk data yang di dalam sebagai pengganti pada akhirnya: - Melakukan sesuatu dengan data item yang menunjuk daftar mereka masing-masing. - Menemukan pointers points untuk item dengan kunci yang paling rendah; membantu salah satu pointer untuk item yang berikutnya dalam daftar. CONTOH : Contoh penerapan atas sebuah larik sebagai data sumber yang akan diurutkan {3, 9, 4, 1, 5, 2 adalah sebagai berikut: - Larik tersebut dibagi menjadi dua bagian, {3, 9, 4 dan {1, 5, 2 - Kedua larik kemudian diurutkan secara terpisah sehingga menjadi {3, 4, 9 dan {1, 2, 5 - Sebuah larik baru dibentuk yang sebagai penggabungan dari kedua larik tersebut {1, sementara nilai-nilai dalam masing larik {3, 4, 9 dan {2, 5 (nilai 1 dalam elemen larik ke dua telah dipindahkan ke larik baru) 101

- langkah berikutnya adalah penggabungan dari masing-masing larik ke dalam larik baru yang dibuat sebelumnya. a. {1, 2 <-> {3, 4, 9 dan {5 b. {1, 2, 3 <-> {4, 9 dan {5 c. {1, 2, 3, 4 <-> {9 dan {5 d. {1, 2, 3, 4, 5 <-> {9 dan {null e. {1, 2, 3, 4, 5, 9 <-> {null dan {null C. TUGAS PENDAHULUAN Jawablah pertanyaan berikut ini : 1. Tuliskan algoritma pengurutan quick sort secara ascending. 2. Tuliskan algoritma pengurutan merge sort secara ascending. D. PERCOBAAN Percobaan 1 : Quick sort secara ascending. public class Quick { public static <T extends Comparable <?super T>> int Partition (T[]arr,int p,int r){ int i,j; T pivot, temp; pivot=arr[p]; //pivot pada index 0 i=p; j=r; while (i<=j){ while(pivot.compareto(arr[j])<0) j--; while(pivot.compareto(arr[i])>0) if(i<j){ temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; j--; else return j; 102

return j; private static <T extends Comparable<?super T>> void Quicksort(T[]arr,int p,int r){ int q; if(p<r) { q=partition(arr, p, r); Quicksort(arr, p, q); Quicksort(arr, q+1, r); public static <T> void tampil(t data[]) { for (T objek : data) { System.out.print(objek + " "); System.out.println(""); public static void main(string[] args) { Integer data[] = new Integer[10]; for(int a=0 ; a<data.length ; a++) { data[a]= (int)(math.random()*13+1); tampil(data); long awal = System.currentTimeMillis(); Quicksort(data,0,data.length-1); long sisawaktu = System.currentTimeMillis() - awal; tampil(data); System.out.println("Waktu " + sisawaktu); Percobaan 2 : Merge sort secara ascending public class Merge { public static <T extends Comparable<? super T>> void merge(t[] arr, int left, int median, int right) { Object[] temp=new Object[arr.length]; int kiri1, kanan1, kiri2, kanan2, i, j; kiri1=left; kanan1=median; kiri2=median+1; kanan2=right; i=left; while ((kiri1 <= kanan1) && (kiri2 <= kanan2)) { if (arr[kiri1].compareto(arr[kiri2]) <= 0) { temp[i]=arr[kiri1]; kiri1++; 103

else { temp[i]=arr[kiri2]; kiri2++; while(kiri1<=kanan1){ temp[i]=arr[kiri1]; kiri1++; while(kiri2<=kanan2){ temp[i]=arr[kiri2]; kiri2++; j=left; while(j<=right){ arr[j]=(t)temp[j]; j++; public static <T extends Comparable<? super T>> void mergesort(t[] arr, int l, int r) { int med; if(l<r){ med=(l+r)/2; mergesort(arr,l,med); mergesort(arr,med+1,r); merge(arr,l,med,r); public static <T> void tampil(t data[]) { for (T objek : data) { System.out.print(objek + " "); System.out.println(""); public static void main(string[] args) { Integer data[] = new Integer[10]; for (int i = 0; i < data.length; i++) { data[i] = (int) (Math.random() * 30 + 1); tampil(data); long awal = System.currentTimeMillis(); mergesort(data, 0, data.length - 1); long akhir = System.currentTimeMillis() - awal; tampil(data); System.out.println("\nwaktu : " + akhir); 104

E. LATIHAN 1. Dari percobaan 1 tambahkan method untuk melakukan pengurutan quick sort secara descending. 2. Dari percobaan 2 tambahkan method untuk melakukan pengurutan merge sort dengan flag secara descending. 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() { Lakukan pengujian fungsi QuickSort() lagi, sebelumnya tambahkan pada fungsi main() seperti di bawah ini! public class Latihan { public static <T extends Comparable <?super T>> int Partition (T[]arr,int p,int r){. private static <T extends Comparable<?super T>> void Quicksort(T[]arr,int p,int r){. public static <T> void tampil(t data[]) {. public static void main(string[] args) { Mahasiswa arr8[] = {new Mahasiswa("02", "Budi"), new Mahasiswa("01", "Andi"), new Mahasiswa("04", "Udin"), new Mahasiswa("03", "Candra"); long awal = System.currentTimeMillis(); bubblesort (arr8); 105

tampil(arr8); long sisawaktu = System.currentTimeMillis() - awal; System.out.println("Waktu " + sisawaktu); 4. Pada soal 3 lakukan untuk algoritma merge sort. 5. Buatlah menu untuk memilih jenis algoritma pengurutan dan menu ascending atau descending seperti di bawah ini ALGORITMA SORTING 1. Insertion 2. Selection 3. Bubble 4. Bubble dengan Flag 5. Shell 6. Quick 7. Merge Pilihan : _1 1. Ascending 2. Descending Pilihan : _1 Waktu : 4 Gunakan data acak dari array of Integer dengan ukuran 100. 6. Lakukan percobaan untuk melihat waktu running untuk setiap algoritma sorting dengan data acak yang sama seperti table di bawah ini dan gambarkan dalam bentuk grafik (boleh menggunakan Excel atau Matlab). Tabel 1. Analisa Perbandingan metode pengurutan berdasarkan waktu running Jumlah data 50000 100000 150000 200000 250000 300000 350000 400000 450000 500000 Waktu Proses Insertion Selection Bubble Bubble Flag Shell Quick Merge 106

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