Struktur Data Oleh: Suhendro Sorting Struktur Data Oleh: Suhendro
Kenapa Sorting itu penting ? Memudahkan dalam pencarian suatu item atau duplikat
Apa yang akan kita bicarakan ? Array In Memory Sorting Comparison based sorting algorithm In memory sorting item-item yang akan di-sort muat di dalam memori komputer, jadi tidak ada akses I/O ke harddisk A comparison based sorting algorithm makes ordering decisions only on the basis of comparisons
Penyegaran... Array Tuliskan tipe data array of integer ! Deklarasikan array of integer yang memiliki 10 item ! Angka indeks pada array dimulai dari angka ? Diketahui int[] tmp; Bagaimana cara mengambil nilai dari array pada indeks ke-1 ? Ubahlah nilai pada indeks ke-2 dengan nilai 25 ! Jika array pada variabel tmp memiliki n item, bagaimana mengambil nilai pada indeks terakhir ? Bagaimana menukar nilai pada indeks ke-1 dengan indeks ke-2 ?
Penyegaran... Comparison Sebutkan operator untuk comparison ! Diketahui nilai a = 5, b = 10, dan c = 15. Apakah nilai dari: a < b b > c a+b <= c a-b >= a
Jenis-jenis Sorting
Bubble Sort Bayangkan gelembung udara yang bergerak ke atas hingga batas tertentu Sumber: http://upload.wikimedia.org/wikipedia/commons/1/1f/Soda_bubbles_macro.jpg
Bubble Sort 9 2. Tukar posisi 1. Nilai paling kiri/atas 3 Pilih item paling kiri/atas dari sekumpulan item yang belum terurut Bandingkan item tersebut dengan setiap item di sebelah kanan/bawah. Jika item sebelah kanan lebih kecil, maka tukar posisi. Ulangi hingga tidak ada item lagi yang belum terurut 8 Belum terurut 2 6 5
public static void bubbleSort (int[ ] x) { int finalSwapPos = x public static void bubbleSort (int[ ] x) { int finalSwapPos = x.length - 1, swapPos; while (finalSwapPos > 0) swapPos = 0; for (int i = 0; i < finalSwapPos; i++) if (x [i] > x [i + 1]) swap (x, i, i + 1); swapPos = i; } finalSwapPos = swapPos;
Selection Sort 9 3 2. Tukar posisi Pilih item yang paling kecil dari sekumpulan item yang belum terurut Tukar item yang paling kecil tersebut dengan item paling kiri/atas dari bagian yang belum terurut Lakukan terus hingga semuanya terurut 8 Belum terurut 2 1. Nilai terkecil dari sekumpulan item yang belum terurut 6 5
public static void selectionSort (int [ ] x) { // Make x [0 . . . i] sorted and <= x [i + 1] . . .x [x.length –1]: for (int i = 0; i < x.length –1; i++) int pos = i; for (int k = i + 1; k < x.length; k++) if (x [k] < x [pos]) pos = k; swap (x, i, pos); }
Insertion Sort Sumber: http://cache.gawkerassets.com/assets/images/17/2011/12/ce7d7bed1a84cd204b8fa0f8f9c659cd.jpg
Insertion Sort Algoritma sederhana, cocok untuk mengurutkan item dalam jumlah sedikit Cara kerja: Jika hanya ada satu item, maka sudah terurut (sorted) Menyisipkan (insert) item ke dalam sejumlah item yang telah terurut. Lakukan terus hingga tidak ada item yang akan disisipkan
Cara Kerja Insertion Sort Disisipkan disebelah sini 8 5 9 2 6 3 terurut belum terurut
public static void insertionSort (int[ ] x) { for (int i = 1; i < x public static void insertionSort (int[ ] x) { for (int i = 1; i < x.length; i++) for (int k = i; k > 0 && x [k -1] > x [k]; k--) swap (x, k, k -1); } public static void swap (int [ ] x, int a, int b) int t = x[a]; x[a] = x[b]; x[b] = t;
Sumber: http://www.sorting-algorithms.com/
Tugas Berdasarkan source code di dalam Slide ini, buat class untuk melakukan sorting dengan menggunakan algoritma Bubble Sort, Selection Sort, dan Insertion Sort. Dateline: Kamis, 12 Maret 2015