P. 1
Sorting

Sorting

|Views: 75|Likes:
Published by wintangy

More info:

Published by: wintangy on Dec 13, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/19/2013

pdf

text

original

ANALISIS ALGORITMA PADA MASALAH SORTING Oleh 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 data yg sebelumnya disusun secara acak sehingga

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 awal o Elemen ke-1 dan ke-2 dari list dibandingkan o 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

terjadi saat semua elemen sudah terurut di mana hanya terjadi pengecekan pada setiap elemen. Untuk jumlah data yang banyak. jika data ya sudah terurut. o Bila tidak ada pertukaran elemen lagi. Keadaan terbaik terjadi bila data yang hendak disorting sudah terurut. sehingga penelusuran hanya dilakukan satu kali saja.o terakhir. maka elemen list terurut. Ini merupakan kasus terbaik yang mungkin terjadi pada algoritma ini. o Bila sudah sampai di elemen terakhir dilakukan pengulangan lagi dari awal sampai tidak ada terjadi o lagi pertukaran elemen. maka algoritma ini akan mebutuhkan waktu yang lama. metode pengurutan apung atau buble sort bukan merupakan metode pengurutan yang efisien. maka Bubble Sort tersebut hanya melewatinya satu kali yaitu O(1500). pada perbandingan yang dilakukan = O(202) = O(4000) -> Lebih besar dibanding 1500 data pada kondisi terurut Oleh karena itu. makadengan jumlah data 20 saja. Namun jika keadaan datanya belum terurut sama sekali. Kelebihan lain dari algoritma ini adalah dapat dieksekusi dan dijalankan dengan cukup cepat. Berapapun jumlah elemen datanya. Hal ini disebabkan oleh banyaknya kemungkinan pertukaran yang terjadi pada proses pengapungan (baca: pengurutan) data. Salah satu kelebihan algoritma bubble sort. . Namun kelebihan dari algoritma ini adalah kesederhanaan dan pola nya yang mudah dipahami.

Efisiensi buble sort Berdasarkan tabel. atau pengurutan yang 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 dan elemen kiri sebagai bilangan terakhir dari kumpulan bilangan o Geser elemen kiri kearah kanan sampai ditemukan nilai yang lebih besar dari elemen tumpuan tersebut. Namun. sort tidak disarankan untuk pengurutan yang menangani lebih dari 200 item. . Geser elemen kanan ke arah kiri sampai ditemukan nilai dari elemen yang tidak lebih besar dari elemen tersebut. bubble terus berulang. tidak ada perbedaan performansi secara signifikan untuk pengurutan terhadap 100 item atau kurang.

o Ulangi o Tukar elemen tumpuan dengan elemen kiri o Urutkan sub bagian yang terhalang oleh tumpuan 2. Stabil . tetapi mempunyai banyak keuntungan. Metode ini tidak begitu mangkus dalam mengolah data yang besar (banyak) dibandingkan algoritma-algoritma yang lebih maju seperti Quicksort. Insertion Sort Insertion Sort adalah sebuah algoritma pengurutan sederhana. Sederhana dalam penerapan 2. diantaranya : 1. Mangkus dalam pengolahan data yang kecil 3. Mangkus dalam data yang sudah sebagian terurut 4. Lebih mangkus dibanding Bubble Sort maupun Selection Sort 5. dengan cara pengurutan perbandingan yang mengurutkan suatu array atau list dengan membuat suatu entry.

j++) { key=array[j].j. } array[i+1]=key.j<array_length.array_length=array. for(i=j. yang membuatnya salah satu algoritma pengurutan tercepat pada jumlah elemen yang sedikit.Algoritma insertion sort dalam bahasa C : Void insertion_sort(apvector <int> &array) { int i.key.length(). Sama halnya . sehingga tidak cocok dalam pengurutan elemen dalam jumlah besar. Salah satu kelebihan metode ini adalah Jika list sudah terurut atau sebagian terurut maka Insertion Sort akan lebih cepat dibandingkan dengan Quicksort. Insertion Sort membutuhkan waktu O(n2) pada data yang tidak terurut.(i>=0)&&(array[i]<key). for(j=1. } return.i--) { aray[i+1]=array[i]. maka pengurutan ini hanya memakanwaktu O(n): dalam setiap iterasi. } Keadaan terbaik didapat ketika list sudah dalam keadaan terurut. loop dalam pada Inserion Sort sangat cepat. Walaupun demikian. elemen pertama list hanya dibandingkan dengan elemen terakhir dari list. Keadaan terburuk dari algoritma ini adalah jika list terurut terbalik sehingga setiap eksekusi dari perintah harus memindai dan mengganti seluruh bagian sebelum menyisipkan elemen berikutnya.

69. metode ini tidak mangkus (efektip) jika jumlah elemen data yang akan diurutkan banyak Contoh proses pengurutan bilangan 84.91 den dengan algoritma insertion sort .76.94.86.dengan buble sort.

. i++) { min = i. for (int j = i + 1. j++) { if (((Comparable)array[min]). . for (int i = startIdx. } } Untuk memilih elemen terkecil memerlukan pemindaian seluruh (n) elemen yang membutuhkan n-1 kali perbandingan lalu memindahkannya ke posisi pertama. Tiap perbandingan memerlukan satu kali pertukaran untuk n-1 elemen. dimana n adalah jumlah total elemen dikurangi 1. Nilai dari i dimulai dari 1 ke n. Ide utama dari algoritma selection sort adalah memilih elemen dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Selection Sort Layaknya insertion sort..compareTo(array[j])>0) { min = j. } } swap(array[min]. Contoh algoritma selection sort: void selectionSort(Object array[]. i < endIdx. int endIdx) { int min. Karena itu perbandingan mendominasi waktu pemrosesan yaitu O(n2). int startIdx.3. Sedang untuk memilih elemen kedua terkecil memerlukan pemindaian dari n-1 elemen dan begitu seterusnya sehingga (n-1) + (n-2) + . array[i]). + 2 + 1 = n(n-1)/2= O(n 2) perbandingan. j < endIdx. algoritma ini sangat simple dan mudah untuk diimplementasikan.

pendekatan penyelesaian secara langsung akan lebih efektif o Kombinasi Mengkombinasikan solusi dari sub-masalah. Berikut algoritma pengurutan dengan merge sort: . Sisa pengurutan satu elemen tersebut menandakan bahwa bagian tersebut telah terurut sesuai rangkaian. Algoritma ini ditemukan oleh John von Neumann pada tahun 1945. o Conquer Conquer setiap bagian dengan memanggil prosedur merge sort secara rekursif o Kombinasi Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan Proses rekursi berhenti jika mencapai elemen dasar. yang akan membimbing menuju penyelesaian atas permasalahan utama Berikut menjelaskan langkah kerja dari Merge sort. Algiritma ini merupakan salah satu contoh algoritma pembagian.4. Merge Sort Merge Sort adalah suatu algoritma pengurutan berbasis perbandingan. Jika sub-masalah tersebut cukup ringkas dan sederhana. Algoritma ini menggunakan konsep rekursip. Hal ini terjadi bilamana bagian yang akan diurutkan menyisakan tepat satu elemen. o Divide Memilah elemen – elemen dari rangkaian data menjadi dua bagian. Beberapa konsep yang harus dipahami sbelum menelusuri algoritma Merge sort: o Divide o Conquer Memilah masalah menjadi sub masalah Selesaikan sub masalah tersebut secara rekursif.

} .array_size-1).void mergesort(int numbers[].0. tmp_pos=tmp_pos+1.temp.mid).int temp[].mid+1. if(right > left) { mid=(right+left)/2.right). } } void merge(int numbers[].int left.int temp[].int temp[]. left=left+1.num_element.right).left. merge(numbers. m_sort(numbers. } } while (left<=left_end) { temp[tmp_pos]=numbers[left]. tmp_pos=tmp_pos+1.int right) { int i. tmp_pos=tmp_pos+1. left=left+1. mid=mid+1. } void m_sort(int numbers[].int array_size) { m_sort(numbers.temp.tmp_pos.int right) { int mid.int mid.mid+1.left_end. tmp_pos=left. num_elements=right-left+1.temp. m_sort(numbers. } else { temp[tmp_pos]=numbers[mid].int left.temp. left_end=mid-1. while((left<=left_end)&&(mid<=right)) { if numbers[left]<=numbers[mid] { temp[tmp_pos]=numbers[left].left.

temp i <.67.r repeat while x(i) < x(l) do i <..l j <.i+1 {end while} while x(j) > x(l) do j <.x(j) x(j) <. } for(i=0.i++) { numbers[right]=temp[right].j-1 {end if} .x(i) x(i) <. tmp_pos=tmp_pos+1. Quick sort Algoritma Quick sort : array [1.integer r) integer i integer j i <.j-1 {end while} if i<j then integer temp temp <.i<=num_elements.10] of integer x <.23. } } 5.while (mid<=right) { temp[tmp_pos]=number[mid]. right=right-1.{ 34.98) procedure quicksort(input : integer l.i+1 j <. mid=mid+1.28.

{end if} Sesuai dengan namanya.49.56.56.76.49.23.37.76.23.j) {end if} if i<r then quicksort(i.23.37.23. Contoh untuk proses pengurutan bilangan pada contoh pseudo-code di atas dengan bilangan berikut 26.37.37 o Penentuan bilangan yang akan menjadi pivot (bilangan 26) o Inisialisasi elemen kiri sebagai bilangan kedua dari kumpulan bilangan dan elemen kiri sebagai bilangan terakhir dari kumpulan bilangan 26.76 o Tukar vipot dengan elemen kiri . Metode quicksort adalah metode pengurutan yang menjadikan sebuah tabel data yang akan diurutkan menjadi dua buah subbagian yang ditelusuri dari kiri dan dari kanan.56.56.37 o Geser elemen kiri kearah kanan sampai ditemukan nilai yang lebih besar dari elemen pivot tersebut.23. Geser elemen kanan ke arah kiri sampai ditemukan nilai dari elemen yang tidak lebih besar dari elemen tersebut 26.37 : o Data awal yang belum terurut : 26.49. cukup sumit dan sulit.56.56. metode ini terbilang cepat dalam mengurutkan data.76 o Lanjutkan 26. namun memang.49.until (i>j) if l<j then quicksort(l.49.49.76.76 26.23.r).

(2007).37.23.37.wikipedia.49.76 Reff: Munir. Rinaldi.76 o Urutkan sub bagian yang terbagi pivot 23.Bandung:informatika http://id.56.56.26. Algoritma & Pemrograman dalam bahasa pascal dan C.org .26.49.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->