Upload
siti-mutiah-nurmala-dewi
View
25
Download
5
Embed Size (px)
Citation preview
Metode Sorting dan AplikasinyaTugas Kuliah Algoritma dan Struktur Data
Siti mutiah nurmala dewiManajemen Informatika
Politeknik Negeri LampungBandar Lampung, [email protected]
Abstrak— makalah ini membahas tentang pengurutan meng-gunakan lima algoritma yang berbeda, yaitu bubble sort, selec-tion sort, insertion sort, quick sort, heap sort, merge sort. Sort-ing adalah Proses mengurutkan, menyusun/ memindahkan po-sisi elemen-elemen/ data dengan tata urut tertentu pada array. Sedangkan Searching adalah Proses penelusuran/ pencarian posisi elemen-elemen / data pada array.[1]
Kata kunci—alogoritma, sorting, searching, bubble sort, selec-tion sort, insertion sort, quick sort, heap sort.
1.PENDAHULUAN1.1 LATAR BELAKANG
Sort adalah proses pengurutan data yang sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurutsuatu aturan tertentu.
[3]
Pada umumnya terdapat 2 jenis pengurutan : Ascending (Naik) Descending (Turun)
Contoh pengurutan data : Data Acak : 5 6 8 1 3 25 10 Terurut
Ascending : 1 3 5 6 8 10 25 Terurut
Descending : 25 10 8 6 5 3 1
1.2 TUJUAN PENULISAN
Menerapkan algoritma bubble sort, selection sort, merge sort, quick sort, insertion sort, dan heap sort.
Menguji dan membandingkan bubble sort, selection sort, merge sort, quick sort, insertion sort, dan heap sort.
2. PEMBAHASAN
1.1 BUBBLE SORT
Metode pengurutan buble sort/ gelembung, prosedur atau algorimatnya adalah sbb: -
a. pengecekan dimulai dari data ke-1 sampai dengan
data ke-n. -b. bandingkan data ke-n dengan data sebelumnya (n-
1),jika lebih kecil maka tukar bilangan tersebut den-gan data yang ada didepanya satu persatu (n-1,n-2,n-3,..dst).
c. lakukan langkah ke 2 sampai mendapatkan urutan yang maksimal.
Berikut ini contoh pembuatan sebuah program pengurutandata atau sorting dengan metode bubble sort kita akan memasukan 15 data yang init data[15]={8,1,45,2,5,2,9,6,12,7,8,6,10,11,44};
yang tidak berurutan. pemrogramanya, serta akan di hitung berapa banyak proses pertukaran posisi data, dan berapa banyak proses perbandingan data. contoh codingnya adalah sebagai berikut :
Contoh Program Metode B u b b l e S o r t
int tmp,TK, FB: void main () { int Data[15]:{8,1,45,2,5,2,9,6,12,7,8,6,10,11,44}; cout<<">>> Sorting dengan Metode Bubble <<<\n’’; cout<<"_______________________________________\n": cout<<"\n\nData sebelum di Urutkan >> "; for (int i=0: i<15; i--) { cout<Data[i]<<" "; } for (int h=0; h<15; h++){ for (int i=0; i<15; i--) { FB++; if (Data[i] > Data[i+1]){ tmp=Data[i]; Data[i]=Data[i+1]; Data[i+1]=tmp; TK--; } } } cout<<endl<<endl; cout<<"Data Sesudah di Urutkan >> ";
for (int j=0; j<15; j++){ cout<<Data[j]<<" "; } cout<<"\n\nJumlah Proses Pertukaran = "<<TK; cout<<"\n\nJumlah Proses Perbandingan = "<<FB; getch(); }
Maka hasilnya
1.2 Metode Selection Sort. Metode pengurutan selection sort,prosedur atau algo-
rimatnya adalah sbb : -
a. pengecekan dimulai dari data ke -1 sampai den-gan data ke – n.
b. tentukan bilangan dengan index terkecil dari data bilangan tersebut.
c. tukar bilangan dengan index terkecil tersebut dengan bilangan pertama (I= 1)dari bilangan tersebut.
d. lakukanlah langkah 2 dan 3 untuk bilangan berikut (I=I+1)sampai dapatkan urutan yang op-timal.
Contoh selection sort : Proses 1
Proses 2 :
Procedure SelectionProcedure Asc_Selection;Var pos ,k: byte;BeginFor i:= 1 to jmldata-1 doBeginPos:=i;For j:= i+1 to jmldata doIf data[j] < data[pos] then pos:=j;If i <> pos then tukardata(data[i],data[pos]);end;
1.3 INSERTION SORT
Pengurutan dilakukan dengan caramembandingkan data ke-I (dimana I dimulai dari data ke-2 sampai dengan data ter-akhir) dengan data berikutnya. Jika ditemukan data yang lebih kecil maka data tersebut disisipkan ke depan sesuai posisi yang seharusnya.
Conto insertion sort :Proses 1 :
Proses 2 :
Prosedur Insert Sortprocedure asc_insert;var temp,k:integer;beginFor i := 2 to jmldata doBeginTemp :=data[i];j := i-1;while (data[j] > temp) and (j>0) dobegindata[j+1] := data[j];dec(j);end;data[j+1]:=temp;end;end;
1.4 HEAP SORTMembandingkan suatu elemen (disebut pivot) dengan elemen yang lain dan menyusunnya sedemikian rupa sehingga ele-men- elemen lain yang lebih kecil daripada pivot tersebut ter-letak di sebelah kirinya dan elemen-elemen lain yang lebih be-sar daripada pivot tersebut terletak di sebelah kanannya.Sehingga dengan demikian telah terbntuk dua sublist, yang terletak di sebelah kiri dan kanan dari pivot. Lalu pada sublist kiri dan sublist kanan kita anggap sebuah list baru dan kita kerjakan proses yang sama seperti sebelumnya. Demikian seterusnya sampai tidak terdapat sublist lagi. Sehingga di-dalamnya telah terjadi proses Rekursif.
Contoh quick sortProses 1 :
Proses 2 :
Procedure quick sortProcedure Asc_Quick(L,R : Integer);Var i, j,k:integer;BeginIf L<R thenBegini := L; j := R+1;repeatrepeat inc(i) until data[i] >= data[1];repeat dec(j) until data[j] <= data[1];if i < j then tukardata (data[i], data[j]);until i > j;tukardata (data[1], data[j]);Asc_Quick(L,j-1);Asc_Quick(j+1,R);End;for k:=1 to jmldata dowrite(data[k],' ');writeln;End;
1.4 Heapsort
Heapsort dilakukan dengan cara membangun struktur data heap dan kemudian menerapkan langkah menghapus node heap. Pada awalnya, kondisi heap kosong. Kemudian, node heap di-insert satu per satu.
Cara alternatif adalah, menampung data yang akan diu-rutkan dalam array, kemudian node pada bagian root di ha-pus. Jika heap adalah minimal heap, maka data pada root adalah data terkecil.
Contoh HeapsortP S C K M L A X E
0 1 2 3 4 5 6 7 8
Konversi array menjadi Heap. Tentukan node parent yang terakhir dalam array, yaitu (heapsize – 2)/2. Pada contoh di atas, node K adalah parent terakhir. Kemudian, lakukanFilterDown dari indeks parent terakhir s/d indeks 0. Pada con-toh di atas, dari indeks 3, 2, 1, kemudian 0.
ARRAY TO HEAP
Tree tersebut adalah Binary Tree namun belum meru-pakan minimal heap yang benar. Kemudian terapkan Fil-terDown pada node dimana parent terakhir berada, yaitu K
LAKUKAN FILTER DOWN
Setelah FilterDown selesai untuk node K, lanjutkan proses yang sama untuk indek 2 yaitu node C.
Setelah FilterDown selesai untuk node C, lanjutkan proses yang sama untuk indek 1 yaitu node S.
Hasil: Sebuah Heap terbentuk! Selanjutnya, remove node Amenggunakan algoritma menghapus node dalam Heap.
Remove Node darii Heap
Remove selalu dimulai dari root karena node root adalah node dengan nilai terkecil
Masalahnya adalah bagaimana melakukan adjustment agar binary tree tetap menjadi minimal head
Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir. Kemudian fungsi FilterDown dipanggil untuk
memeriksa dari root sd node leaf agar setiap node masih memenuhi syarat heap.
Node C ditukar dengan node A, ukuran array diasumsikan berkurang 1 yaitu dari indeks 0 sd 7. Kemudian, tentukan in-deks parent terakhir, dan ulangi proses .
C E L K M S P X A 0 1 2 3 4 5 6 7 8
Hasil Akhir
Data yang terurut descending orderX S P M L K E C A
0 1 2 3 4 5 6 7 8
1.5 Merge SortMetode pengurutan merge sort adalah metode pengurutan lan-jut, sama dengan metode Quick Sort. Metode ini juga menggu-nakan konsep devide and conquer yang membagi data S dalam dua kelompok yaitu S1 dan S2 yang tidak beririsan (disjoint). Proses pembagian data dilakukan secara rekursif sampai data tidak dapat dibagi lagi atau dengan kata lain datadalam sub bagian menjadi tunggal. Setelah data tidak dapat dibagi lagi, proses penggabungan (merging) dilakukan antara sub-sub bagian dengan memperhatikan urutan data yang di-inginkan (ascending/kecil ke besar atau descending/besar ke kecil). Proses penggabungan ini dilakukan sampai semua data tergabung danterurut sesuai urutan yang diiginkan. Kompleksitas algoritma merge sort.
Ilustrasi dari algoritma merge sort adalah sebagai berikut:
Algoritma mergesort(S,C)Input: n elemen dari data S dan comparator COutput: data S terurut berdasarkan Cif S.size()>1(S1,S2) ← partisi(S,n/2)mergesort(S1,C)mergesort(S2,C)S ← merge(S1,S2)Fungsi merge berfungsi untuk menggabungkan hasil penguru-tan dari subbagian S1 dan S2 berdasarkan urutan tertentu (ascending atau descending
order). Kompleksitas proses penggabungan ini (merging) adalah O(n).
3. DAFTAR PUSTAKA
https://www.academia.edu/6608552/Tugas- makalah-struktur-data
eprints.unsri.ac.id/2644/2/Jurnal_Infotel_2_-_Akatel_SP.pdf
sumarna.staff.gunadarma.ac.id/Downloads/files/31662/8.+Sorting.pdf