6
Metode Sorting dan Aplikasinya Tugas Kuliah Algoritma dan Struktur Data Siti mutiah nurmala dewi Manajemen Informatika Politeknik Negeri Lampung Bandar Lampung, Lampung [email protected] Abstrak— makalah ini membahas tentang pengurutan menggunakan lima algoritma yang berbeda, yaitu bubble sort, selection sort, insertion sort, quick sort, heap sort, merge sort. Sorting adalah Proses mengurutkan, menyusun/ memindahkan posisi 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, selection sort, insertion sort, quick sort, heap sort. 1. PENDAHULUAN 1.1LATAR BELAKANG Sort adalah proses pengurutan data yang sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu 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 dengan 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

tugas algoritma

Embed Size (px)

Citation preview

Page 1: tugas algoritma

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 >> ";

Page 2: tugas algoritma

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 :

Page 3: tugas algoritma

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

Page 4: tugas algoritma

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

Page 5: tugas algoritma

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