Click here to load reader

Analisis Algoritma Pada Masalah Sorting

  • View
    14.405

  • Download
    7

Embed Size (px)

Text of Analisis Algoritma Pada Masalah Sorting

  • 1. ANALISIS ALGORITMA PADA MASALAH SORTINGOleh Dea Rokhmatun Iradewa (0700940)Program Ilmu Komputer UPI Dalam ilmu komputer, yang dimaksud dengan algoritma pengurutan pada dasarnya adalah : algoritma yang meletakkan elemen-elemen suatu kumpulan data dalam urutan tertentu. Proses pengurutan datayg sebelumnya disusun secaraacaksehingga menjadi tersusun secara teratur menurut suatu aturan tertentu. Yang pada kenyataannya urutan tertentu yang umum digunakan adalah terurut secara numerikal ataupun secara leksikografi (urutan secara alfabetis). Ada 2 jenis pengurutan, yaitu Ascending (naik) & Descending (turun) 1. Buble Sort Bubble sort atau yang disebut juga metode pengurutan apung adalah salah satu metode pengurutan yang bersifat langsung dan termasuk jenis pengurutan yang paling sederhana. Metode ini terinspirasi oleh gelembung sabun di air dimana delembung sabun yang lebih ringan dari air akan selalu naik ke permukaan. Nama bubble sort sendiri berasal dari sifat nilai terbesar yang selalu naik (ke akhir dari list) seperti gelembung sabun (bubble). Konsep dari bubble sort adalah sebagai berikut :o Pengecekan dimulai dari elemen paling awalo Elemen ke-1 dan ke-2 dari list dibandingkano Jika elemen pertama lebih besar dari elemen kedua, dilakukan pertukaran.o Langkah 2 dan 3 dilakukan lagi terhadap elemen kedua dan ketiga,seterusnya sampai elemen

2. o terakhir.o Bila sudah sampai di elemen terakhir dilakukan pengulangan lagi dari awal sampai tidak ada terjadio lagi pertukaran elemen.o Bila tidak ada pertukaran elemen lagi, maka elemen list terurut. Salah satu kelebihan algoritma bubble sort, terjadi saat semua elemen sudah terurut di mana hanya terjadi pengecekan pada setiap elemen, sehingga penelusuran hanya dilakukan satu kali saja. Ini merupakan kasus terbaik yang mungkin terjadi pada algoritma ini. Kelebihan lain dari algoritma ini adalah dapat dieksekusi dan dijalankan dengan cukup cepat. Keadaan terbaik terjadi bila data yang hendak disorting sudah terurut, Berapapun jumlah elemen datanya, jika data ya sudah terurut, maka Bubble Sort tersebut hanya melewatinya satu kali yaitu O(1500). Namun jika keadaan datanya belum terurut sama sekali, makadengan jumlah data 20 saja, pada perbandingan yang dilakukan = O(202) = O(4000) -> Lebih besar dibanding 1500 data pada kondisi terurut Oleh karena itu, metode pengurutan apung atau buble sort bukan merupakan metode pengurutan yang efisien. Hal ini disebabkan oleh banyaknya kemungkinan pertukaran yang terjadi pada proses pengapungan (baca: pengurutan) data. Untuk jumlah data yang banyak, maka algoritma ini akan mebutuhkan waktu yang lama. Namun kelebihan dari algoritma ini adalah kesederhanaan dan pola nya yang mudah dipahami. 3. Efisiensi buble sortBerdasarkan tabel, tidak ada perbedaan performansi secara signifikan untuk pengurutan terhadap 100item atau kurang. Namun, bubblesort tidak disarankan untuk pengurutan yangterus berulang,atau pengurutan yang menangani lebih dari 200 item.Pola Pengurutan Dengan Buble Sort : o Data awal yang belum terurut : o Penentuan bilangan yang akan menjadi acun (bilangan 26) o Inisialisasi elemen kiri sebagai bilangan kedua dari kumpulan bilangan danelemen kiri sebagai bilangan terakhir dari kumpulan bilangan o Geser elemen kiri kearah kanan sampai ditemukan nilai yang lebih besar darielemen tumpuan tersebut. Geser elemen kanan ke arah kiri sampai ditemukannilai dari elemen yang tidak lebih besar dari elemen tersebut. 4. o Ulangi o Tukar elemen tumpuan dengan elemen kiri o Urutkan sub bagian yang terhalang oleh tumpuan 2. Insertion SortInsertion Sort adalah sebuah algoritma pengurutan sederhana, dengancara pengurutan perbandingan yang mengurutkan suatu array atau list denganmembuat suatu entry.Metode ini tidak begitu mangkus dalam mengolah data yang besar(banyak) dibandingkan algoritma-algoritma yang lebih maju seperti Quicksort, tetapimempunyai banyak keuntungan, diantaranya :1. Sederhana dalam penerapan2. Mangkus dalam pengolahan data yang kecil3. Mangkus dalam data yang sudah sebagian terurut4. Lebih mangkus dibanding Bubble Sort maupun Selection Sort5. Stabil 5. Algoritma insertion sort dalam bahasa C : Void insertion_sort(apvector &array) { int i,j,key,array_length=array.length(); for(j=1;j=0)&&(array[i]0) { min = j;}} swap(array[min], array[i]); } } Untuk memilih elemen terkecil memerlukan pemindaian seluruh (n)elemen yang membutuhkan n-1 kali perbandingan lalu memindahkannya ke posisipertama. Sedang untuk memilih elemen kedua terkecil memerlukan pemindaiandari n-1 elemen dan begitu seterusnya sehingga (n-1) + (n-2) + ... + 2 + 1 = n(n-1)/2=O(n 2) perbandingan. Tiap perbandingan memerlukan satu kali pertukaran untuk n-1elemen. Karena itu perbandingan mendominasi waktu pemrosesan yaitu O(n2). 8. 4. Merge SortMerge Sort adalah suatu algoritma pengurutan berbasis perbandingan.Algiritma ini merupakan salah satu contoh algoritma pembagian. Algoritma iniditemukan oleh John von Neumann pada tahun 1945. Algoritma ini menggunakankonsep rekursip. Beberapa konsep yang harus dipahami sbelum menelusurialgoritma Merge sort:o DivideMemilah masalah menjadi sub masalaho Conquer Selesaikan sub masalah tersebut secara rekursif. Jika sub-masalah tersebut cukup ringkas dan sederhana, pendekatan penyelesaian secara langsung akan lebih efektifo Kombinasi Mengkombinasikan solusi dari sub-masalah, yang akan membimbing menuju penyelesaian atas permasalahan utama Berikut menjelaskan langkah kerja dari Merge sort.o Divide Memilah elemen elemen dari rangkaian data menjadi dua bagian.oConquer Conquer setiap bagian dengan memanggil prosedur merge sort secara rekursifoKombinasi Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi bilamana bagian yang akan diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen tersebut menandakan bahwa bagian tersebut telah terurut sesuai rangkaian. Berikut algoritma pengurutan dengan merge sort: 9. void mergesort(int numbers[],int temp[],int array_size) {m_sort(numbers,temp,0,array_size-1); }void m_sort(int numbers[],int temp[],int left,int right) {int mid;if(right > left){ mid=(right+left)/2; m_sort(numbers,temp,left,mid); m_sort(numbers,temp,mid+1,right); merge(numbers,temp,left,mid+1,right);} }void merge(int numbers[],int temp[],int left,int mid,int right) {int i,left_end,num_element,tmp_pos;left_end=mid-1;tmp_pos=left;num_elements=right-left+1;while((left

Search related