ALGORITMA SORTING TOPIK Sorting Insertion Sort Selection Sort

  • Slides: 20
Download presentation
ALGORITMA SORTING

ALGORITMA SORTING

TOPIK � Sorting � Insertion Sort � Selection Sort � Merge Sort � Paradigma

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 �

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

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

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

INSERTION SORT: ALGORITMA 1 2 3 4 5 6 7 8 9 10 11 12 13 void insertion. Sort(Object array[], int start. Idx, int end. Idx) { for (int i = start. Idx; i < end. Idx; i++) { int k = i; for (int j = i + 1; j < end. Idx; j++) { if (((Comparable) array[k]). compare. To( array[j])>0) { k = j; } } swap(array[i], array[k]); } }

INSERTION SORT: CONTOH

INSERTION SORT: CONTOH

SELECTION SORT � Algoritma sorting yang lainnya � Intuitif dan mudah diimplementasikan � Juga

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 ditukar dengan kartu terakhir

SELECTION SORT: ALGORITMA �Pilih elemen dengan nilai terendah �Tukarkan elemen terpilih dengan elemen pada

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

SELECTION SORT: ALGORITMA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 void selection. Sort(Object array[], int start. Idx, int end. Idx) { int min; for (int i = start. Idx; i < end. Idx; i++) { min = i; for (int j = i + 1; j < end. Idx; j++) { if (((Comparable) array[min]). compare. To( array[j])>0) { min = j; } } swap(array[min], array[i]); } }

SELECTION SORT: CONTOH

SELECTION SORT: CONTOH

MERGE SORT: PARADIGMA DIVIDE-AND-CONQUER � Menggunakan rekursi dalam penyelesaiannya : � Permasalahan awal dipilah

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 � Conquer elemen data

MERGE SORT: ALGORITMA � Menggunakan pendekatan divide-and-conquer � Divide �Membagi � Conquer elemen data menjadi dua bagian �Selesaikan tiap bagian secara rekursif dengan memanggil method merge. Sort. � 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

MERGE SORT: ALGORITMA 1 2 3 4 5 6 7 8 9 10 void merge. Sort(Object array[], int start. Idx, int end. Idx) { if (array. length != 1) { Divide the array into two halves, left. Arr and right. Arr merge. Sort(left. Arr, start. Idx, mid. Idx); merge. Sort(right. Arr, mid. Idx+1, end. Idx); combine(left. Arr, right. Arr); } }

MERGE SORT: CONTOH

MERGE SORT: CONTOH

QUICKSORT: ALGORITMA � Ditemukan oleh C. A. R. Hoare � Berdasar pada paradigma divide-and-conquer

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 quick. Sort secara rekursif � Tak perlu melakukan proses “Combine” � Subarrays telah terurutkan

QUICKSORT: ALGORITMA 1 2 3 4 5 6 7 8 9 10 void quick.

QUICKSORT: ALGORITMA 1 2 3 4 5 6 7 8 9 10 void quick. Sort(Object array[], int left. Idx, int right. Idx) { int pivot. Idx; /* Termination condition! */ if (right. Idx > left. Idx) { pivot. Idx = partition(array, left. Idx, right. Idx); quick. Sort(array, left. Idx, pivot. Idx-1); quick. Sort(array, pivot. Idx+1, right. Idx); } }

QUICKSORT: CONTOH

QUICKSORT: CONTOH

QUICKSORT: CONTOH

QUICKSORT: CONTOH

KESIMPULAN �Teknik Sorting sederhana �Insertion Sort �Selection Sort �Paradigma �Merge Sort �Quicksort Divide-and-Conquer

KESIMPULAN �Teknik Sorting sederhana �Insertion Sort �Selection Sort �Paradigma �Merge Sort �Quicksort Divide-and-Conquer