Politeknik Elektronika Negeri Surabaya

dokumen-dokumen yang mirip
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

Politeknik Elektronika Negeri Surabaya

A. TUJUAN PEMBELAJARAN

BAB VI Pengurutan (Sorting)

Modul Praktikum 6 Pemograman Berorientasi Objek

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

A. TUJUAN PEMBELAJARAN

Bab Tujuan. 6.2 Insertion Sort

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

Outline STRUKTUR DATA. VII. Sorting

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

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

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

STRATEGI DIVIDE AND CONQUER

SORTING (BAGIAN II) Proses kelima

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Politeknik Elektronika Negeri Surabaya

A. TUJUAN PEMBELAJARAN

PENGURUTAN (SORTING) 1. Overview

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Sorting. Quick Sort

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

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

SORTING. Brigida Arie Minartiningtyas, M.Kom

ANALISIS PERBANDINGAN METODE ALGORITMA QUICK SORT DAN MERGE SORT DALAM PENGURUTAN DATA TERHADAP JUMLAH LANGKAH DAN WAKTU

BAB 8 SORTING DAN SEARCHING

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

7. SORTING DAN SEARCHING

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Algoritma Bubble Sort dan Quick Sort

Gambar 13.1 Ilustrasi proses algoritma sorting

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

SORTING (PENGURUTAN DATA)

A. TUJUAN PEMBELAJARAN

Modul Praktikum Algoritma dan Struktur Data

Gambar 1. Single Linked List

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

Sorting. Pertemuan ke 14.

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

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

SORTING (Pengurutan)

Bubble Sort dan Selection Sort di Java Console

BAB 2 LANDASAN TEORI

Gambar 1. Single Linked List

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

Modul 8 SORTING (PENGURUTAN)

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

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

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

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

Array. Adharul Muttaqin Universitas Brawijaya Malang. Array

Pencarian (Searching)

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

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

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

Algoritme dan Pemrograman

Praktikum 8. Pengurutan (Sorting) Bubble Sort, Shell Sort

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

LAPORAN PRAKTIKUM SEMENTARA ALGORITMA & STRUKTUR DATA 1

ShortHand If Else di Java

ALGORITMA PENGURUTAN & PENCARIAN

Metode Binnary Searching di Java Console

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

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

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

Array Multidimensi. Pemrograman Dasar. Java

PENGOLAHAN DATA KUISIONER PENGGUNA WEBSITE MENGGUNAKAN METODE PENGURUTAN QUICKSORT GUNA TERCAPAINYA TUJUAN HUMAN COMPUTER INTERACTION

PEMBAHASAN UJIAN TENGAH SEMESTER PEMROGRAMAN BERBASIS OBYEK Dosen : Tim Dosen PBO

PRAKTIKUM 9 PROSEDUR BERSARANG

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

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

Gambar 1. Single Linked List

PENGURUTAN DATA 2.1 Definisi Pengurutan 2.2 Metode-metode Pengurutan

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

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

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

Powered by icomit.wordpress.com

PERTEMUAN 10 METODE DEVIDE AND CONQUER

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

STRUKTUR DATA SORTING ARRAY

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

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

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

Tes Asisten Praktikum Alpro Lanjut

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

MODUL 5 PERULANGAN A. WHILE

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Metode Insertion Sort di Java Console

Decrease and Conquer

Struktur Kontrol Pemrograman Java : PERCABANGAN

Transkripsi:

PRAKTIKUM 13 ALGORITMA PENGURUTAN (QUICK SORT) A. TUJUAN PEMBELAJARAN 1. Memahami step by step algoritma pengurutan quick sort. 2. Mampu mengimplementasikan algoritma pengurutan quick sort dengan berbagai macam parameter berupa tipe data primitif atau tipe Generic. 3. Mampu mengimplementasikan algoritma pengurutan quick sort secara ascending dan descending. B. DASAR TEORI Algoritma Quick Sort Metode Quick sering disebut juga metode partisi (partition exchange sort). Metode ini diperkenalkan pertama kali oleh C.A.R. Hoare pada tahun 1962. Untuk mempertinggi efektifitas dari metode ini, digunakan teknik menukarkan dua elemen dengan jarak yang cukup besar. Proses penukaran dengan metode quick dapat dijelaskan sebagai berikut.: mulamula dipilih data tertentu yang disebut pivot, misalnya x. Pivot dipilih untuk mengatur data di sebelah kiri agar lebih kecil daripada pivot dan data di sebelah kanan agar lebih besar daripada pivot. Pivot ini diletakkan pada posisi ke j sedemikian sehingga data antara 1 sampai dengan j-1 lebih kecil daripada x. Sedangkan data pada posisi ke j+1 sampai N lebih besar daripada x. Caranya dengan menukarkan data diantara posisi 1 sampai dengan j-1 yang lebih besar daripada x dengan data diantara posisi j+1 sampai dengan N yang lebih kecil daripada x. Ilustrasi dari metode quick dapat dilihat pada Gambar 6.1 100

12 35 9 11 3 17 23 15 31 20 9 11 3 12 35 17 23 15 31 20 3 9 11 12 17 23 15 31 20 35 3 9 11 12 15 17 23 31 20 35 3 9 11 12 15 17 20 23 31 35 Gambar 1 Ilustrasi Metode Quick Sort Gambar 1 diatas menunjukkan pembagian data menjadi sub-subbagian. Pivot dipilih dari data pertama tiap bagian maupun sub bagian, tetapi sebenarnya kita bisa memilih sembarang data sebagai pivot. Dari ilustrasi diatas bisa kita lihat bahwa metode Quick Sort ini bisa kita implementasikan menggunakan dua cara, yaitu dengan cara non rekursif dan rekursif. Pada kedua cara diatas, persoalan utama yang perlu kita perhatikan adalah bagaimana kita meletakkan suatu data pada posisinya yang tepat sehingga memenuhi ketentuan diatas dan bagaimana menyimpan batas-batas subbagian. Dengan cara seperti yang diperlihatkan pada Gambar 6.1, kita hanya menggerakkan data pertama sampai di suatu tempat yang sesuai. Dalam hal ini kita hanya bergerak dari satu arah saja. Untuk mempercepat penempatan suatu data, kita bisa bergerak dari dua arah, kiri dan kanan. Caranya adalah sebagai berikut : misalnya kia mempunyai 10 data (N=9) : 12 35 9 11 3 17 23 15 31 20 i=0 j=9 Pertama kali ditentukan i=0 (untuk bergerak dari kiri ke kanan), dan j=n (untuk bergerak dari kanan ke kiri). Proses akan dihentikan jika nilai i lebih besar atau sama dengan j. Sebagai contoh, kita akan menempatkan elemen pertama, 12 pada posisinya yang tepat 101

dengan bergerak dari dua arah, dari kiri ke kanan dan dari kanan ke kiri secara bergantian. Dimulai dari data terakhir bergerak dari kanan ke kiri (j dikurangi 1), dilakukan pembandingan data sampai ditemukan data yang nilainya lebih kecil dari 12 yaitu 3 dan kedua elemen data ini kita tukarkan sehingga diperoleh 3 35 9 11 12 17 23 15 31 20 i=0 j=4 Setelah itu bergerak dari kiri ke kanan dimulai dari data 3 (i ditambah 1), dilakukan pembandingan pada setiap data yang dilalui dengan 12, sampai ditemukan data yang nilainya lebih besar dari 12 yaitu 35. Kedua data kita tukarkan sehingga diperoleh 3 12 9 11 35 17 23 15 31 20 i=1 j=4 Berikutnya bergerak dari kanan ke kiri dimulai dari 11. Dan ternyata data 11 lebih kecil dari 12, kedua data ini ditukarkan sehingga diperoleh 3 11 9 12 35 17 23 15 31 20 i=1 j=3 Kemudian dimulai dari 9 bergerak dari kiri ke kanan. Pada langkah ini ternyata tidak ditemukan data yang lebih besar dari 12 sampai nilai i=j. Hal ini berarti proses penempata data yang bernilai 12 telah selesai, sehingga semua data yang lebih kecil dari 12 berada di sebelah kiri dan data yang lebih besar dari 12 berada di sebelah kanan seperti terlihat di bawah ini 3 11 9 12 35 17 23 15 31 20 C. TUGAS PENDAHULUAN Jelaskan algoritma pengurutan quick sort secara ascending dengan data 5 6 3 1 2 102

D. PERCOBAAN Percobaan 1 : Quick sort secara ascending dengan data int. public class QuickDemo { private static int partition(int[] A, int p, int r) { int pivot, i, j; pivot = A[p]; i = p - 1; j = r + 1; for (;;) { do { i++; while (A[i] < pivot); do { j--; while (A[j] > pivot); if (i < j) { int temp = A[i]; A[i] = A[j]; A[j] = temp; else { return j; public static void quicksort(int[] A, int p, int r) { int q; if (p < r) { q = partition(a,p,r); quicksort(a,p, q); quicksort(a,q + 1, r); public static void tampil(int data[]){ for(int i=0;i<data.length;i++) System.out.print(data[i]+" "); System.out.println(); public class MainQuick { int A[] = {10,6,8,3,1; QuickDemo.tampil(A); QuickDemo.quickSort(A,0,A.length-1); QuickDemo.tampil(A); 103

Percobaan 2 : Quick sort secara ascending dengan data double. public class QuickDemo { private static int partition(double[] A, int p, int r) { int i, j; double pivot; pivot = A[p]; i = p - 1; j = r + 1; for (;;) { do { i++; while (A[i] < pivot); do { j--; while (A[j] > pivot); if (i < j) { double temp = A[i]; A[i] = A[j]; A[j] = temp; else { return j; public static void quicksort(double[] A, int p, int r) { int q; if (p < r) { q = partition(a,p,r); quicksort(a,p, q); quicksort(a,q + 1, r); public static void tampil(double data[]){ for(int i=0;i<data.length;i++) System.out.print(data[i]+" "); System.out.println(); public class MainQuick2 { double A[] = {10.3,6.2,8.4,3.6,1.1; QuickDemo.tampil(A); 104

QuickDemo.quickSort(A,0,A.length-1); QuickDemo.tampil(A); E. LATIHAN 1. Buatlah program sorting Quick dengan parameter array Integer (class Wrapper)! public static void quicksort(integer[] A){ 2. Buatlah program sorting Quick dengan parameter array Double (class Wrapper)! public static void quicksort(double[] A){ 3. Buatlah fungsi tampil() untuk menampilkan data. public static<t> void tampil(t data[]){ 4. Lakukan pengujian fungsi quicksort(), dengan membuat fungsi main() sebagai berikut : public class Demo1 { //Data Integer Integer arr3[] = {1,5,6,2,8,9; QuickDemo.quickSort(arr3, 0,arr3.length-1); QuickDemo.tampil(arr3); //data Double Double arr4[] = {1.3,5.2,6.6,2.7,8.8,9.1; QuickDemo.quickSort(arr4,0,arr4.length-1); QuickDemo.tampil(arr4); 5. Buatlah program sorting Quick dengan parameter array Number! public static<t extends Number> void quicksort(t[] A){ 6. Lakukan pengujian fungsi quicksort(), dengan membuat fungsi main() sebagai berikut : public class Demo2 { Float arr5[] = {1.3f,5.2f,6.6f,2.7f,8.8f,9.1f; QuickDemo.quickSort(arr5, 0,arr5.length-1); QuickDemo.tampil(arr5); 105

Byte arr6[] = {6,7,11,1,3,2; QuickDemo.quickSort(arr6, 0,arr6.length-1); QuickDemo.tampil(arr6); 7. Buatlah program sorting Quick dengan parameter array yang memenuhi T extends Comparable! public static <T extends Comparable> void quicksort2(t[] arr) { 8. Lakukan pengujian fungsi quicksort(), dengan membuat fungsi main() sebagai berikut : public class Demo3 { //data String String arr7[]= {"jeruk","anggur","belimbing","jambu","kelengkeng"; QuickDemo.quickSort2(arr7, 0,arr7.length-1); QuickDemo.tampil(arr7); 9. 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() { 10. Lakukan pengujian fungsi quicksort() lagi, sebelumnya tambahkan pada fungsi main() seperti di bawah ini! public class Demo4 { 106

Mahasiswa arr8[] = {new Mahasiswa("02", "Budi"), new Mahasiswa("01", "Andi"), new Mahasiswa("04", "Udin"), new Mahasiswa("03", "Candra"); QuickDemo.quickSort2(arr8, 0,arr8.length-1); QuickDemo.tampil(arr8); F. LAPORAN RESMI Kerjakan hasil percobaan(d) dan latihan(e) di atas dan tambahkan analisa. 107