Jeni Slides Intro2 Bab06 Algorithm A Sorting

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Jeni Slides Intro2 Bab06 Algorithm A Sorting as PDF for free.

More details

  • Words: 755
  • Pages: 20
Algoritma sorting Pengenalan Pemrograman 2

Versi 2.0

Topik 

Sorting



Insertion Sort



Selection Sort



Merge Sort ◦ Paradigma Divide-and-Conquer



Quicksort ◦ Paradigma Divide-and-Conquer

Sorting



Mengatur elemen berdasar urutan tertentu



Digunakan secara luas dalam aplikasi



Beberapa algoritma sorting telah dibuat karena proses tersebut sangat mendasar dan sering digunakan

Insertion Sort Salah satu algoritma paling sederhana  Cukup intuitif dan prosesnya mirip dengan mengurutkan kartu ◦ Tujuan: mengurutkan kartu dari paling kecil hingga terbesar ◦ Terdapat: kartu, meja 1, meja 2 ◦ Awal: Kartu acak diletakkan pada meja 1 ◦ Teknik: Kartu berurutan diletakkan pada meja 2 ◦ Ambil kartu pertama dari meja 1, bandingkan dengan tabel 2 dan tempatkan sesuai posisi urutan di meja 2 ◦ Ulangi hingga seluruh kartu terletak pada meja 2 

Insertion Sort: Algoritma 

Bagi elemen data yang akan diurutkan menjadi dua ◦ Bagian yang belum diurutkan ◦ Bagian yang telah terurutkan



Ulangi langkah tersebut hingga tidak ada elemen tersisa dalam array ◦ Elemen pertama dipilih dari bagian yang belum diurutkan ◦ Tempatkan elemen terpilih sesuai urutan pada array

Insertion Sort: Algoritma 1 2 3 4 5 6 7 8 9 10 11 12 13

void insertionSort(Object array[], int startIdx, int endIdx) { for (int i = startIdx; i < endIdx; i++) { int k = i; for (int j = i + 1; j < endIdx; j++) { if (((Comparable) array[k]).compareTo( array[j])>0) { k = j; } } swap(array[i], array[k]); } }

Insertion Sort: Contoh

Selection Sort 

Algoritma sorting yang lainnya ◦ Intuitif dan mudah diimplementasikan



Juga mirip dengan cara lain dalam pengurutan kartu ◦ Tujuan: mengurutkan kartu secara ascending ◦ Diberikan: kartu, meja ◦ Awal: Kartu disebar secara acak pada tabel ◦ Periksa nilai, kemudian pilih kartu dengan nilai terendah ◦ Tukarkan posisi kartu ini dengan kartu pertama pada meja ◦ Cari kartu dengan nilai terendah dari sisa kartu yang ada ◦ Tukarkan kartu terpilih dengan kartu pada posisi kedua ◦ Ulangi proses hingga kartu kedua sebelum terakhir pada meja dibandingkan dan ditukar dengan kartu terakhir

Selection Sort: Algoritma

 Pilih

elemen dengan nilai terendah

 Tukarkan

elemen terpilih dengan elemen pada posisi ke - i

◦ i dimulai dari 1 hingga n ◦ Dimana n adalah total elemen yang ada dikurangi 1

Selection Sort: Algoritma 1 2 3 4 5 6 7 8 9 10 11 12 13 14

void selectionSort(Object array[], int startIdx, int endIdx) { int min; for (int i = startIdx; i < endIdx; i++) { min = i; for (int j = i + 1; j < endIdx; j++) { if (((Comparable) array[min]).compareTo( array[j])>0) { min = j; } } swap(array[min], array[i]); } }

Selection Sort: Contoh

Merge Sort: Paradigma Divide-and-Conquer 

Menggunakan rekursi dalam penyelesaiannya : ◦ Permasalahan awal dipilah menjadi sub-masalah ◦ Solusi atas sub-masalah menuntun menuju permasalahan utama



3 Langkah: ◦ Divide

 Membagi permasalahan menjadi submasalah

◦ Conquer

Menyelesaikan sub-masalah secara rekursif Jika sub-masalah cukup sederhana dan kecil, selesaikan secara langsung

◦ Combine

Kombinasikan solusi dari sub-masalah yang ada, hingga mencapai permasalahan utama

Merge Sort: Algoritma 

Menggunakan pendekatan divide-and-conquer ◦ Divide

 Membagi elemen data menjadi dua bagian ◦ Conquer

Selesaikan tiap bagian secara rekursif dengan memanggil method mergeSort.

◦ Combine

Kombinasikan dua bagian secara rekursif untuk mendapatkan urutan yang diharapkan



Rekursi selesai pada saat sisa dari sebagian elemen yang akan diurutkan tepat tersisa satu ◦ Telah terurutkan

Merge Sort: Algoritma 1 2 3 4 5 6 7 8 9 10

void mergeSort(Object array[], int startIdx, int endIdx) { if (array.length != 1) { Divide the array into two halves, leftArr and rightArr mergeSort(leftArr, startIdx, midIdx); mergeSort(rightArr, midIdx+1, endIdx); combine(leftArr, rightArr); } }

Merge Sort: Contoh

Quicksort: Algoritma 

Ditemukan oleh C.A.R. Hoare



Berdasar pada paradigma divide-and-conquer ◦ Divide

 Bagi array menjadi dua subarray A[p...q-1] dan A[q+1...r] dimana A[p...q-1] adalah kurang dari atau sama dengan A[q] dan elemen pada A[q+1...r] adalah lebih dari atau sama dengan A[q] A[q] disebut sebagai pivot Perhitungan q adalah bagian dari prosedur pemisahan ◦ Conquer

Urutkan subarray tersebut dengan memanggil method quickSort secara rekursif

◦ Tak perlu melakukan proses “Combine”

Subarrays telah terurutkan

Quicksort: Algoritma

1 2 3 4 5 6 7 8 9 10

void quickSort(Object array[], int leftIdx, int rightIdx) { int pivotIdx; /* Termination condition! */ if (rightIdx > leftIdx) { pivotIdx = partition(array, leftIdx, rightIdx); quickSort(array, leftIdx, pivotIdx-1); quickSort(array, pivotIdx+1, rightIdx); } }

Quicksort: Contoh

Quicksort: Contoh

Kesimpulan  Teknik

Sorting sederhana

◦ Insertion Sort ◦ Selection Sort  Paradigma

◦ Merge Sort ◦ Quicksort

Divide-and-Conquer

Related Documents