Algoritma Sorting

35
 Algoritma sorting D I S U S U n OLEH Nama : ISWAHYUNI Mata Kuliah : Struktur Data NPM : 1111706 STMIK BUDIDARMA MEDAN TA 2011-2012 Sorting bisa didefinisikan sebagai suatu proses pengurutan data yang sebelumnya disusun secara aca k sehingga menj adi tersusun secara teratur menurut suatu aturan tertentu. Sorti ng yang kit a terapkan menggunakan tipe data array agar pemahaman serta pengimplementasiannya lebih mudah. Pada umumnya terdapat dua jenis pengurutan : - Ascending (Naik). ontoh : !"#"$%"$&"!! - 'escending (urun). ontoh : !!"$&"$%"#"!  ntuk melakukan proses pengurutan tersebut dapat dig unakan berbagai macam cara*metode.  $. +ubble Sort

description

Algo

Transcript of Algoritma Sorting

Algoritma sorting

D

I

S

U

S

U

nOLEHNama :ISWAHYUNIMata Kuliah : Struktur DataNPM : 1111706STMIK BUDIDARMA MEDANTA 2011-2012

Sorting bisa didefinisikan sebagai suatu proses pengurutan data yang sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu. Sorting yang kita terapkan menggunakan tipe data array agar pemahaman serta pengimplementasiannya lebih mudah. Pada umumnya terdapat dua jenis pengurutan :

- Ascending (Naik).Contoh : 2,3,10,15,22- Descending (Turun).Contoh : 22,15,10,3,2Untuk melakukan proses pengurutan tersebut dapat digunakan berbagai macam cara/metode.

1.Bubble Sort 2.Selection Sort 3.Merge Sort 4.Heap Sort 5.Shaker Sort

Metode Pengurutan DataPengurutan berdasarkan perbandingan (comparison-based sorting) Bubble sortPengurutan berdasarkan prioritas (priority queue sorting method) Selection sort, heap sortPengurutan berdasarkan penyisipan dan penjagaan terurut (insert and keep sorted method) Merge SortPengurutan berkurang menurun (diminishing increment sort method)

1.BUBBLE SORTMetode ini merupakan metode yang paling sederhana dan paling tidak efisien, karena memerlukan waktu yang relatif lebih lama dibandingkan dengan metode - metode yang lainnya. Konsep dasar dari Bubble sort ialah membandingkan elemen yang sekarang dengan elemen yang berikutnya, jika elemen sekarang > elemen berikutnya (untuk ascending), maka dilakukan proses penukaran. Proses sorting dapat dimulai dari data awal atau data akhir.Idenya adalah :Lakukan pengulangan ( pass ) pada array, tukar elemen yang bersebelahan jika diperlukan ( perbandingan nilainya tidak sesuai ); jika tidak ada pertukaran elemen maka array sudah terurut.Dalam pass pertama, temukan elemen dengan nilai tertinggi ( maksimal ) dalam array dan tukarkan dengan elemen di sebelah kanannya dan seterusnya sampai dengan mencapai posisinya di ujung array sebelah kanan.Kemudian dalam pass kedua, nilai tertinggi kedua dalam array akan ditempatkan dalam posisinya ( di sebelah kiri elemen dengan nilai tertinggi ( maksimal ).Teruskan langkah ketiga sampai semua elemen array terurut.

Berikut ini merupakan Procedure BubbleSort pada Pascal :Procedure Bubble( Var Temp : Data; JmlData : Integer);Var I,J : Integer;BeginFor I:=1 To JmlData DoFor J:=JmlData DownTo I DoIf Temp[J]< Temp[J-1] Then {Untuk Descending >}SWAPTemp = a[J-1];a[J-1] = a[J];a[J] = Temp;

End;

Langkah Langkah Bubble Sort Ascending

Langkah Langkah Bubble SortDescending

Contoh Sorting dengan Bubble SortIterasiKeA[1]A[2]A[3]A[4]A[5]

Awal22101532

110221532

10152232

10153222

10153222

210153222

10315222

10321522

10321522

331021522

32101522

32101522

32101522

423101522

23101522

23101522

23101522

523101522

23101522

23101522

23101522

Akhir23101522

Di sini terlihat ketidakefisienan dari bubble sort yaitu harus menyelesaikanJumMax 1 dari data. Sedangkan jika kita melihat dari tabel diataspada iterasi keempat saja data sudah terurut dan seharusnya pada saat itu proses sudah berhenti, tapi dengan bubble sort proses harus dilakukan sampai looping selesai.Pada seluruh prosedur yang menggunakan metode sorting pasti memerlukan prosedur tambahan tukar data (Swap) untuk menukarkan dua buah elemen dalam data. Berikut ini merupakan prosedur untuk menukarkan dua buah data.

2.SELECTION SORTMirip dengan bubble sort, namun algoritma ini lebih sedikit usaha untuk menempatkan setiap elemen ke posisinya.Idenya :Pertama temukan elemen array terkecil ( minimum ) dan pertukarkan dengan elemen array di posisi ( indeks ) pertamaKemudian temukan elemen array terkecil kedua dan pertukarkan dengan elemen array di posisi ( indeks ) keduaUlangi langkah-langkah diatas sampai semua array terurut

Berikut ini merupakan Procedure Selection Sort pada Pascal :Procedure selectionSort(var a : array[1..size] of integer );varinteger i,j, min, tmp;beginfor( i:=1 to size-1) do beginfor (j = i + 1 to size ) do beginmin = j;if (a[i] > a[min]) thenSWAPtmp = a[i];a[i] = a[min];a[min] = a[i];end;end;end; { end of procedure }

Langkah Langkah Selection Sort Ascending

Langkah Langkah Selection SortDescending

Contoh sorting dengan Selection SortIterasi KeA[1]A[2]A[3]A[4]A[5]

Awal2210832

I=1, Lok=52108322

I=2, Lok=42381022

I=3, Lok=42381022

I=4, Lok=52381022

Akhir2381022

3.MERGE SORTAlgoritmaMerge Sortditemukan oleh John von Neumann di tahun 1945. Merge Sort termasuk paradigma algoritma divide and conquer (kurang lebih berarti: bagi dan atasi). Hal ini dikarenakan algoritma ini melakukan pembagian struktur data sebelum kemudian dioperasi satu per satu. Intinya, algoritma ini menggunakan dua ide utama sebagai berikut, Sebuah list yang kecil membutuhkan langkah yang lebih sedikit untuk pengurutan daripada sebuah list yang besar.Untuk membentuk sebuah list terurut dari dua buah list terurut membutuhkan langkah yang lebih sedikit daripada membentuk sebuah list terurut dari dua buah list tak terurut. Contoh: hanya diperlukan satu kali traversal untuk masing-masing list jika keduanya sudah terurut.

Algoritma Merge SortAlgoritma Merge Sort sederhananya, dapat ditulis berikut:a.Bagi list yang tak terurut menjadi dua sama panjang atau salah satunya lebih panjang satu elemen.b.Bagi masing-masing dari 2 sub-list secara rekursif sampai didapatkan list dengan ukuran 1.c.Gabung 2 sublist kembali menjadi satu list terurut.

Merge Sort dengan metode rekursifTerdapat 3 prosedur dalam metode ini, yaitu prosedur merge sort,merge, dan insert.prosedur mergesort

Langkah-langkahnya:1.Membagi 1 array menjadi 2 dengan cara: cari tengahnya mid= (a+b) div 2 sehingga terdapat 2 bagian, (a,mid) dan (mid+1,b) lakukan terus pembagian sampai pada leaves (daun) yang tidak bisa dibagi lagi.2.Lakukan merge pada daun yang tidak bisa dibagi lagi3.Kedua langkah diatas dilakukan apabia abendProsedur InsertLangkah - langkahnya:1. Tentukan nilai yang akan diinsert (k), lalu masukkan nilai dari elemen ke-k ke variabel temp.2. Tentukan bahwa j=kposisi dari j sampai i+1 menggeser kekanan3. Masukkan temp ke a[i]Berikut ini merupakan Procedure insert :procedure insert(k,i)begintemp=a[k]for j=k downto i+1a[j]=a[j-1]endfora[i]=tempend 4.Heap SortHeap Sort adalah sort yang memanfaatkan prinsip Pohon Heap. Pohon Heap adalah pohon biner complete dimana nilai yang terkandung dalam simpul bapak atau Father (F) lebih besar atau lebih kecil dari nilai kedua buah simpul anaknya atau simpul Son (5), sedangkan nilai simpul anak cabang kiri bisa lebih besar, lebih kecil, atau sama dengan nilai simpul anak cabang kanan.I.Contoh Pohon HeapII.Contoh Bukan Pohon HeapIII.Sistem Penomoran Pada SimpulIV.Proses Pada Heap SortData yang akan disort berada dalam array satu dimensi. Sudah diketahui bahwa arraysatu dimensi dapat diilustrasikan atau dinyatakan dalam pohon biner.Proses Heap Sort terdiri dari 2 tahap.Susunan data dalam array diubah sedemikian rupa sehingga biladinyatakan dalam pohon biner, maka pohonnya menjadi Pohon Heap. Setelah data dalam array IBerbentukO Pohon Heap, kemudiandilakukan proses sort dengan mempertahankan pohon tetap sebagaiPohon Heap, tapi nilai urut menaik atau menurun berdasarkan nomor simpul.V.Proses Pada Heap Sort1.Menyusun array menjadi pohon heap (secara lojik)Ilustrasi penerapan algoritma untuk data array di atas, terlihat seperti di bawah.Isi tabel menjadi:Isi tabel menjadi:Isi tabel menjadi:Datanya menjadi :Hasil akhir pohon heap2.Mengurutkan array pohon heapIlustrasi proses pengurutan sebagai berikut:Langkah Langkah Heap Sort AscendingLangkah Langkah Heap SortDescending5.SHAKER SORTAlgoritma Shaker sort merupakan improvement dari algoritma pengurutan Bubble sort. Cara kerja dari algoritma ini hampir sama dengan cara kerja dari algoritma Bubble Sort. Perbedaannya adalah Shaker sort melakukan pengurutan array dari dua arah.Berikut ini merupakan Procedure shaker sort :procedureShakeSort(varX : ArrayType; N :integer);varL,R,K,J :integer;beginL :=2;R := N;K := N;repeatforJ := RdowntoLdoif(X[J] < X[J -1])thenbeginSwap(X[J], X[J -1]);K := Jend;L := K +1;forJ := LtoRdoif(X[J] < X[J -1])thenbeginSwap(X[J], X[J -1]);K := Jend;R := K -1;untilL >= Rend;procedureSwap(varX, Y :integer);varTemp :integer;beginTemp := X;X := Y;Y := Tempend;Langkah Langkah Shaker Sort AscendingLangkah Langkah Shaker SortDescending