• Tidak ada hasil yang ditemukan

Analisis Pengaruh Struktur Data Terhadap Kompleksitas Waktu Komputasi Algoritma Selection Sort Dan Merge Sort

N/A
N/A
Protected

Academic year: 2016

Membagikan "Analisis Pengaruh Struktur Data Terhadap Kompleksitas Waktu Komputasi Algoritma Selection Sort Dan Merge Sort"

Copied!
76
0
0

Teks penuh

(1)

ANALISIS PENGARUH STRUKTUR DATA TERHADAP KOMPLEKSITAS WAKTU KOMPUTASI ALGORITMA SELECTION SORT

DAN MERGE SORT

TESIS

JIJON SAGALA 117038054

PROGRAM STUDI MAGISTER (S2) TEKNIK INFORMATIKA

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

(2)

ANALISIS PENGARUH STRUKTUR DATA TERHADAP KOMPLEKSITAS WAKTU KOMPUTASI ALGORITMA SELECTION SORT

DAN MERGE SORT

TESIS

Diajukan untuk melengkapi tugas dan memnuhi syarat memperoleh ijazah Magister Teknik Informatika

JIJON SAGALA

117038054

PROGRAM STUDI MAGISTER (S2) TEKNIK INFORMATIKA

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

(3)

PERSETUJUAN

Judul Tesis : ANALISIS PENGARUH STRUKTUR DATA TERHADAP

KOMPLEKSITAS WAKTU KOMPUTASI ALGORITMA

SELECTION SORT DAN MERGE SORT

Nama Mahasiswa : JIJON SAGALA

No. Induk Mahasiswa : 117038054

Program Studi : MAGISTER TEKNIK INFORMATIKA

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Prof. Dr. Drs. Iryanto, M.Si Prof. Drs. Tulus, Vordipl.Math, M.Si, Ph.D

Diketahui/Disetujui oleh

Program Studi S2 Teknik Informatika Ketua,

(4)

PERNYATAAN

ANALISIS PENGARUH STRUKTUR DATA TERHADAP KOMPLEKSITAS WAKTU KOMPUTASI ALGORITMA SELECTION SORT

DAN MERGE SORT

TESIS

Saya yang mengakui bahwa tesis ini adalah hasil karya tulis saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah saya sebutkan sumbernya.

Medan, 30 Oktober 2013

(5)

PERNYATAAN PERSETUJUAN PUBLIKASI

KARYA ILMIAH UNTUK KEPENTINGAN

AKADEMIS

Sebagai civitas akademika Universitas Sumatera Utara, saya yang bertanda tangan dibawah

ini :

Nama : Jijon Sagala

NIM : 117038054

Program Studi : S2 Teknik Informatika

Jenis Karya Ilmiah : Tesis

Demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada Universitas

Sumatera Utara Hak Bebas Royalti Non-Eksklusif ( Non-Exclusive Rayalty Free Eight )

atas tesis saya yang berjudul:

ANALISIS PENGARUH STRUKTUR DATA TERHADAP KOMPLEKSITAS

WAKTU KOMPUTASI ALGORITMA SELECTION SORT

DAN MERGE SORT

Beserta perangkat yang ada(jika diperlukan). Dengan Hak Bebas Royalti Non-Eksklusif ini,

Universitas Sumatera Utara berhak menyimpan, mengalih media, menformat, mengelola

dalam bentuk database, merawat dan mempublikasikan tesis saya tanpa meminta izin dari

saya selama tetap mencantumkan nama saya sebagai penulis dan sebagai pemegang

dan/atau sebagai pemilik hak cipta

Demikian pernyataan ini dibuat dengan sebernarnya.

Medan, 30 Oktober 2013

Jijon Sagala

(6)

Telah diuji pada

Tanggal : Rabu 30 Oktober 2013

PANITIA PENGUJIAN TESIS

Ketua : Prof. Drs. Tulus, Vordipl.Math, M.Si, Ph.D

(7)

DAFTAR RIWAYAT HIDUP

DATA PRIBADI

Nama Lengkap ( Berikut Gelar ) : Jijon Sagala, S.Kom

Tempat dan Tanggal Lahir : Situnggaling, 4 September 1984

Alamat Rumah : Jln. B.W. Kusuma No.14C, Pasar 4 Padang Bulan

Telepon/Fax/HP : 081361587795

E-Mail : jhi_sgl@yahoo.com

Instansi Tempat Bekerja : YPN Medicom

Alamat Kantor : Jln. Bantam No 12 Medan

DATA PENDIDIKAN

SD SD Inpres Merek TAMAT 1998

SMP SMP Negeri 1 Merek TAMAT 2001

SMA SMA Sw Dharma Pancasila Medan TAMAT 2004

D1 PABT D1 Medicom Medan TAMAT 2005

D3 AMIK D3 Medicom Medan TAMAT 2007

S1 STMIK Sisingamangaraja XII Medan TAMAT 2011

(8)

UCAPAN TERIMA KASIH

Puji dan syukur kehadirat Tuhan Yang Maha Esa atas anugerahNya dan berkatNya Penulis

dapat menyelesaikan Tesis ini, yang berjudul “ ANALISIS PENGARUH STRUKTUR DATA TERHADAP KOMPLEKSITAS WAKTU KOMPUTASI ALGORITMA

SELECTION SORT DAN MERGER SORT ”. Tesis ini merupakan Tugas Akhir pada

Program Studi Magister S2 Teknik Informatika Fakultas Ilmu Komputer dan Teknologi

Informasi, Universitas Sumatera Utara.

Dalam menyelesaikan pendidikan di Program Studi Magister S2 Teknik Informatika

Universitas Sumatera Utara ini, penulis banyak mendapat dukungan dari berbagai pihak,

maka pada kesempatan ini Penulis mengucapkan terima kasih dan penghargaan yang

sebesar-besarnya kepada:

1. Prof. Dr. dr. Syahril Pasaribu, DTM&H, M.Sc(CTM), Sp,A(K) selaku Rektor

Universitas Sumatera Utara.

2. Prof. Dr. Muhammad Zarlis selaku Dekan Fakultas Ilmu Komputer dan Teknologi

Informasi Universitas Sumatera Utara dan Ketua Program Studi Magister Teknik

Informatika dan juga sebagai pembanding pada penulisan Tesis ini dan berkat saran dan

bantuanya beliau sehingga penulisan Tesis ini dapat diselesaikan dengan baik.

3. Muhammad Andri Budiman, ST., M.Comp.Sc., selaku sekretaris Program Studi

Magister Teknik Informatika yang telah banyak memberikan bantuan dan motivasinya

selama perkuliahan sehingga Penulis dapat menyelesaikan Tesis dan Perkualiahan ini.

4. Prof. Drs. Tulus, Vordipl.Math, M.Si, Ph.D, selaku Ketua Komisi Pembimbing pada

penulisan Tesis ini, berkat dorongan dan bantuan beliau sehingga penulisan Tesis ini

dapat diselesaikan dengan baik.

5. Prof. Dr. Drs. Iryanto, M.Si, selaku Anggota Komisi Pembimbing II yang telah memberikan bimbingan dan petunjuk sehingga Tesis ini dapat diselesaikan dengan

baik.

6. Prof. Dr. Herman Mawengkang selaku pembanding, atas saran dan bantuanya untuk

(9)

7. Dr. Erna Budhiarti Nababan, M.IT selaku pembanding, atas saran dan bantuanya untuk

kesempurnaan penulisan Tesis ini serta bimbingan selama perkuliahan berlangsung.

8. Seluruh Staf pengajar pada Program Studi Magister Teknik Informatika, Fakultas Ilmu

Komputer dan Teknologi Informasi Universitas Sumatera Utara, yang telah

memberikan ilmu pengetahuan kepada penulis selama perkuliahan hingga selesai.

9. Seluruh Staf administrasi Program Studi Magister Teknik Informatika mbak Widia,

mbak Ines, bang Jawaher dan yang lainnya yang telah banyak memberikan bantuan dan

pelayanan terbaik kapada Penulis.

10.Seluruh rekan-rekan seperjuangan mahasiswa angkatan ketiga stambuk 2011 Kom B

Pak Pirmando Gultom, Bu Ertina Barus, Pak Andi Marwan, Bu Yulia Dalimunthe, Bu

Fitri Marina, Pak Arman Barus, Pak Arta Pinem, Bu Wulan, Pak Muhazir dan yang

lainnya, yang telah bersama-sama selama perkuliahan atas kerjasama, kebersamaan dan

saling pengertiannya selama ini dalam mengatasi berbagai masalah yang dihadapi

selama perkualiahan tanpa menegenal lelah sehingga tugas-tugas bersama dapat

diselesaikan dengan baik.

11.dr. Reinhard Silalahi selaku Pimpinan Yayasan Pendidikan Nasional Medicom beserta

seluruh staf yayasan dan staf pengajar yang telah memberikan dorongan dan dukungan

sehingga Penulis dengan tetap suka cita dan bersemangat untuk menyelesaikan kuliah

dengan baik.

12.Penulis menyampaikan terima kasih yang sangat luar biasa pada istri tercinta Marisa

Natarlian Br Ginting, S.Pd atas cinta dan kasih serta doa yang tulus diberikan kepada

penulis, sehingga dapat menyelesaikan Tesis dengan baik.

13.Penulis menyampaikan terima kasih yang tak terhingga kepada Bapak tercinta J. Sagala

dan Mamak Tersayang S Br Munthe, saudaraku terkasih bang Jasa Sagala & Kak

Rentina Br Sijabat, Kak Risa Br Sagala & bang Adi, Kak Riahta Br Sagala, SE, bang

Junner Sagala & Kak Erti Br Sidabuke dan Adiku Irma Sari Br Sagala, SS serta

keponakan ku Ozi, Enjel, Destri, Jesen Sagala, Jon Steven Sagala dan Jaren Sagala,

kasih sayang dan dukungan tulus dari kalian adalah semangat hidupku.

14.Penulis juga menyampaikan terima kasih yang sangat besar kepada Bapak Mertua D.

Ginting dan Ibu Mertua R Br Sebayang serta silihku Yuda Ginting & Novita Br

(10)

Ginting, Giovani Ginting dan Tercio Ginting yang telah banyak memberikan doa yang

tulus dan dukungan kepada penulis.

Kepada semua pihak yang telah turut membantu penulisan Tesis ini baik langsung

maupun tidak langsung yang penulis dapatkan selama ini. Semoga Tesis ini bermanfaat

bagi pembaca dan pihak-pihak yang membutuhkannya.

Medan, 30 Oktober 2013

Penulis,

Jijon Sagala

(11)

ABSTRAK

Seiring berkembangnya kemajuan di bidang informatika dan komputasi, tuntutan untuk

menemukan metode pemecahan masalah secara lebih tepat, efektif dan kuat menjadi sebuah

kebutuhan, terutama untuk permasalahan klasik. Salah satu masalah klasik di bidang

informatika dan komputasi adalah pengurutan data ( sorting ). Pengurutan data ( sorting )

memegang peranan penting dalam banyak aplikasi dan persoalan yang mengacu pada

banyak data (minimal lebih dari satu), dan seringkali menjadi upa-masalah yang banyak

dipertimbangkan agar keseluruhan permasalahan dapat diselesaikan dengan lebih baik dan

cepat. Algoritma pengurutan (sorting) yang dipakai adalah algoritma Merge Sort dan

selection sort. Pada penilitian ini akan dipaparkan penjelasan singkat dan perbandingan

kecepatan dan keefektifan algoritma-algoritma pengurutan data dengan elemen integer.

(12)

DATA STRUCTURE INFLUENCE ANALYSIS TOWARDS ALGORITHM

COMPUTATION TIME COMPLEXITY SELECTION SORT

AND MERGE SORT

ABSTRACT

As the development advances in the field of informatics and computing, the demand to find

a method of solving the problem more precise, effective and powerful become a necessity,

especially for classical problems. One of the classic problems in the field of informatics and

computing are data sorting (sorting). Data sorting (sorting) plays an important role in many

applications and issues that refer to the data (at least more than one), and the ceremony is

often a problem that many considered that the whole problem can be solved with better and

faster. Sorting algorithms (sorting) is used and the Merge Sort algorithm selection sort. In

this research will be presented a brief description and comparison of the speed and

effectiveness of data sorting algorithms with integer elements.

(13)

DAFTAR ISI

UCAPAN TERIMA KASIH vii

ABSTRAK x

1.4 Tujuan Penelitian 3

BAB 2 TINJAUAN PUSTAKA 4

2.1 Pengertian Algoritma 4

2.2 Algoritma Pengurutan 5

2.3 Kompleksitas Algoritma 6

2.4 Growth Function 7

2.5 Notasi Asimptotik 8

2.6 Pengertian Selection Sort 8

2.7 Pengertian Merge Sort 9

2.8 Struktur Data 10

2.9 Penelitian Terdahulu 12

BAB 3 METODOLOGI PENELITIAN 13

(14)

3.1.1 Pseudocode Minimum Selection Sort 13

3.1.2 Pseudocode Maximum Selection Sort 14

3.1.3 Loop Invariant Minimum Selection Sort 14

3.2 Simulasi Algoritma Pengurutan Selection Sort 15

3.3 Analisis Dan Running Time Selection Sort 17

3.4 Selection Sort Model Insert(Sisip) 18

3.4.1 Pseudecode Selection Sort Model Insert 18

3.4.2 Simulasi Algoritma Pengurutan Selection Sort Model Insert 19

3.5 Selection Sort Model New List(Dua List) 20

3.5.1 Pseudecode Selection Sort Model New List 20

3.5.2 Simulasi Algoritma Pengurutan Selection Sort Model New List 20

3.6 Penjelasan Singkat Merge Sort 21

3.6.1 Pseudocode Merge Sort 21

3.6.2 Loop Invariant Pada Prosedure Merge Sot 22

3.7 Simulasi Algoritma Merge Sort 23

3.8 Analisis Dan Running Time Merge Sort 28

BAB 4 HASIL DAN PEMBAHASAN 30

4.1 Pendahuluan 30

4.2 Hasil Dan Uji Coba 30

4.2.1 Pengurutan pada Max Item = 10 30

4.2.2 Pengurutanpada Max Item = 500 35

4.2.3 Pengurutanpada Max Item = 1000 39

4.3 Pembahasan 44

4.4 Analisis Perbandingan Selection Sort dengan Merge Sort 45

BAB 5 KESIMPULAN DAN SARAN 47

DAFTAR PUSTAKA

(15)

DAFTAR TABEL

Tabel 2.1 Tabel Notasi Big O 7

Tabel 2.2 Perbedaan mendetail antara Array dan List 12

(16)

DAFTAR GAMBAR

Gambar 4.1 Item Tampilan hasil pada max item 10 danMax Value 1000 31

Gambar 4.2 Pengurutan pada Max Item 10 Max Item Value = 1000 32

Gambar 4.3 Grafik perbandingan keempat pengurutan untuk Max Item 10 Max

Item Value = 1000 32

Gambar 4.4 Tampilanhasilpada max item 10 danMax Item Value 1000000 33

Gambar 4.5 Hasil pengurutan pada Max item 10 dan Max Item Value 1000000 34

Gambar 4.6 Grafik perbandingan keempat pengurutan untuk Max Item 10 Max

Item Value = 1000000 35

Gambar 4.7 PengurutanPada Max Item 500 Max Item Value=1000 35

Gambar 4.8 Hasil pengurutan pada Max item 500 dan Max Item Value = 1000 36

Gambar 4.9 Grafik perbandingan keempat pengurutan untuk Max Item 500 Max

Item Value = 1000 37

Gambar 4.10 Pengurutan Pada Max Item 500 Max Item Value = 1000000 37

Gambar 4.11 Hasil pengurutan pada Max item 500 dan Max Item Value 1000000 38

Gambar 4.12 Grafik perbandingan keempat pengurutan untuk Max Item 500 Max

Item Value = 1000000 39

Gambar 4.13 PengurutanPada Max Item 1000 Max Item Value=1000 40

Gambar 4.14 Hasil pengurutan pada Max item 1000 dan Max Item Value 1000 41

Gambar 4.15 Grafik perbandingan keempat pengurutan untuk Max Item 1000

Max Item Value = 1000 41

Gambar 4.16 PengurutanPada Max Item 1000 Max Item Value=1000000 42

Gambar 4.17 Hasil pengurutan pada Max item 1000 dan Max Item Value 1000 43

Gambar 4.18 Grafik perbandingan keempat pengurutan untuk Max Item 1000

(17)

ABSTRAK

Seiring berkembangnya kemajuan di bidang informatika dan komputasi, tuntutan untuk

menemukan metode pemecahan masalah secara lebih tepat, efektif dan kuat menjadi sebuah

kebutuhan, terutama untuk permasalahan klasik. Salah satu masalah klasik di bidang

informatika dan komputasi adalah pengurutan data ( sorting ). Pengurutan data ( sorting )

memegang peranan penting dalam banyak aplikasi dan persoalan yang mengacu pada

banyak data (minimal lebih dari satu), dan seringkali menjadi upa-masalah yang banyak

dipertimbangkan agar keseluruhan permasalahan dapat diselesaikan dengan lebih baik dan

cepat. Algoritma pengurutan (sorting) yang dipakai adalah algoritma Merge Sort dan

selection sort. Pada penilitian ini akan dipaparkan penjelasan singkat dan perbandingan

kecepatan dan keefektifan algoritma-algoritma pengurutan data dengan elemen integer.

(18)

DATA STRUCTURE INFLUENCE ANALYSIS TOWARDS ALGORITHM

COMPUTATION TIME COMPLEXITY SELECTION SORT

AND MERGE SORT

ABSTRACT

As the development advances in the field of informatics and computing, the demand to find

a method of solving the problem more precise, effective and powerful become a necessity,

especially for classical problems. One of the classic problems in the field of informatics and

computing are data sorting (sorting). Data sorting (sorting) plays an important role in many

applications and issues that refer to the data (at least more than one), and the ceremony is

often a problem that many considered that the whole problem can be solved with better and

faster. Sorting algorithms (sorting) is used and the Merge Sort algorithm selection sort. In

this research will be presented a brief description and comparison of the speed and

effectiveness of data sorting algorithms with integer elements.

(19)

BAB 1

PENDAHULUAN

1.1Latar Belakang Masalah

Perkembangan ilmu pengetahuan dan teknologi pada saat ini sudah sangat maju dan

komputer adalah salah satu teknologi tinggi. Pengerjaan secara komputerisasi dalam

aktivitas manusia baik di sekolah, instansi, perusahaan-perusahaan maupun kalangan

masyarakat sangat membantu karena komputer bekerja lebih teliti, akurat dalam

pengolahan data.

Pengolahan data tidak dapat dilepaskan begitu saja dari kehidupan kita sehari-hari dan

komputer pada umumnya digunakan untuk mengolah data. Pengolahan data adalah

pengolahan terhadap elemen-elemen data atau kombinasinya untuk membuat data itu

berguna. Hasil dari pengolahan data adalah sebuah bentuk yang berarti bagi penerimanya

dan bermanfaat dalam pengambilan keputusan saat ini dan mendatang atau disebut dengan

informasi. Oleh karena proses pengumpulan dan pengolahan data sangat penting dilakukan

karena kemudahan dan kecepatan mendapatkan informasi merupakan suatu keinginan bagi

penerima atau yang membutuhkan.

Sejarah kemunculan algoritma sejalan dengan kemunculan teknologi komputer.

Analisis algoritma menjadi topik bahasan utama dalam disiplin ilmu komputer. Seorang

programmer komputer telah lama menggunakan algoritma untuk diterapkan pada sistem

informasi manajemen yang menjalankan fungsi-fungsi akuntansi perusahaan yang disebut

sistem pemrosesan transaksi (transaction information system) atau sistem pemrosesan data

secara elektronik (Electronic Data Processing/EDP), yang kemudian berkembang menjadi

sistem pendukung pengambilan keputusan (Decision Support System/DSS).

Algoritma adalah kumpulan instruksi yang dibuat secara jelas terhadap penyelesaian

suatu masalah. Kumpulan instruksi yang dimaksud dibangun dari suatu bahasa

pemograman yang dimengerti oleh komputer. Kumpulan instruksi tersebut berupa

(20)

suatu masalah secara lebih efektif dengan sedikit sumber daya yang dilibatkan dan lebih

efisien dengan durasi waktu yang dibutuhkan sedikit (cepat). Secara bebas, kita

menganggap algoritma kurang lebih sama dengan suatu prosedur yang sering dikerjakan

atau dilakukan sehari-hari.

Dalam analisis algoritma terdapat bagian-bagian yang dapat dianalisis, yaitu kecepatan

waktu, kapasitas biaya dan kapasitas ruang. Ketiganya menggunakan notasi θ (big θ),

dengan mengetahui Notasi θ maka notasi Big O dan Big Ω dapat diketahui. Banyak metode pada proses pengolahan data, salah satu di antaranya adalah metode pengurutan (sorting),

pengurutannya secara urut naik (ascending) dan pengurutan secara urut turun (descending).

Pengurutan (sorting) adalah proses mengatur sekumpulan obyek menurut urutan atau susunan

tertentu. Pengurutan dapat berupa nilai, objek atau nama.

Algoritma pengurutan (sorting algorithm) adalah algoritma yang menyimpan suatu list

pada suatu urutan tertentu, biasanya membesar atau mengecil, biasanya digunakan untuk

mengurutkan angka ataupun huruf. Efisiensi pada pengurutan ini diperlukan untuk

mengoptimalkan kecepatan pemrosesan. Semakin efisien suatu algoritma, maka pada saat

dieksekusi dan dijalankan akan menghabiskan waktu yang lebih sedikit dan bisa menerima

lebih banyak masukan dari user. Terdapat banyak algoritma pengurutan yang sudah dibuat

seperti selection sort, shell sort, heapsort, bubble sort, insertion sort, radix sort, quicksort,

dan mergesort.

Data yang diolah dalam pengurutan berupa data stack, vektor, tree, array, list, double

link list, maka yang di olah pada penguruan ini adalah data array dan data list. Yang

menjadi domain pada kesempatan ini adalah mencoba untuk menganalisis kecepatan waktu

dari semua algoritma sorting, dengan sekali inputan data berupa bilangan bulat (integer)

dalam suatu list atau array. Maka dari uraian tersebut diatas, penulis merasa tertarik untuk

melakukan penelitian dengan judul ANALISIS PENGARUH STRUKTUR DATA TERHADAP KOMPLEKSITAS WAKTU KOMPUTASI ALGORITMA SELECTION

(21)

1.2 Rumusan Masalah

Rumusan masalah yang akan dibahas dalam penelitian ini adalah bagaimana menganalisis

pengaruh struktur data terhadap kempleksitas waktu komputasi secara teoritis dan

exprerimental antara metode Selection Sort dan Merge Sort.

1.3Batasan Masalah

Berdasarkan identifikasi tersebut dan menghindari cakupan masalah yang terlalu luas, maka

penulis membatasi masalah sebagai berikut :

1. Tipe struktur data yang digunakan adalah larik (array) statis dan list.

2. Data yang diinputkan bilangan positif dari 1 sampai 1.000.000 besarnya Array, data

tersebut akan diacak dengan dengan nilai batasan 1 sampai 1.000.000 nilai Array dan

boleh ada yang sama. Untuk menentukan efisiensi dari kedua metode pertukaran dilihat

dari banyaknya pertukaran terhadap elemen data.

3. Proses pengurutan (sorting) yang dilakukan secara sequential dengan melakukan

proses satu persatu.

4. Pengurutan kompleksitas(teoritikal) dengan Notasi Big θ, Big O dan Big Ω

5. Penguruan waktu (experimental) di lakukan dengan microsecond

1.4Tujuan Penelitian

Adapun tujuan yang ingin dicapai dalam penelitian ini adalah Untuk membandingkan

kesesuian nilai waktu Experimental dengan Teoritikal, untuk menganalisis pengaruh

Struktur data array dan struktur data list pada kinerja selection sort model Insert dan

selection sort model New List. Untuk menentukan mana pengurutan yang menggunakan

(22)

BAB 2

TINJAUAN PUSTAKA

2.1. Pengertian Algoritma

Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara

sistematis dan logis. Kata Logis merupakan kata kunci dalam Algoritma. Langkah-langkah

dalam Algoritma harus logis dan harus dapat ditentukan bernilai salah atau benar (Rosa dan

Shalahuddin 2010). Kriteria Algoritma yang baik :

a. Tepat, benar, sederhana, standar dan efektif.

b. Logis, terstruktur dan sistematis.

c. Semua operasi terdefinisi.

d. Semua proses harus berakhir setelah sejumlah langkah dilakukan.

e. Ditulis dengan bahasa yang standar dengan format pemrograman agar mudah untuk

diimplementasikan dan tidak menimbulkan arti ganda.

Algoritma adalah jantung ilmu komputer atau informatika. Banyak cabang ilmu

komputer yang diacu dalam terminologi algoritma. Namun, jangan beranggapan algoritma

selalu identik dengan ilmu komputer saja. Dalam kehidupan sehari-hari pun banyak

terdapat proses yang dinyatakan dalam suatu algoritma. Cara-cara membuat kue atau

masakan yang dinyatakan dalam suatu resep juga dapat disebut sebagai algoritma. Pada

setiap resep selalu ada urutan langkah-lankah membuat masakan. Bila langkah -langkahnya

tidak logis, tidak dapat dihasilkan masakan yang diinginkan. Ibu-ibu yang mencoba suatu

resep masakan akan membaca satu per satu langkah-langkah pembuatannya lalu ia

mengerjakan proses sesuai yang ia baca. Secara umum, pihak (benda) yang mengerjakan

proses disebut pemroses (processor). Pemroses tersebut dapat berupa manusia, komputer,

robot atau alat-alat elektronik lainnya. Pemroses melakukan suatu proses dengan

melaksanakan atau mengeksekusi algoritma yang menjabarkan proses tersebut(Munir

(23)

2.2. Algoritma Pengurutan ( Sorting )

Algoritma merupakan urutan aksi-aksi yang dinyatakan dengan jelas dan tidak rancu untuk

memecahkan suatu masalah dalam rentang waktu tertentu. Sedangkan pengurutan adalah

proses pengaturan sekumpulan objek berdasarkan urutan atau susunan tertentu, dapat

berupa pengurutan menaik (ascending) atau menurun (descending). (Sharma at all 2008).

Contoh, sebuah larik atau array terdiri dari kumpulan bilangan : [3,12,1,50,33,5,28]

 Hasil pengurutan menaik (ascending) : [1,3,5,12,28,33,50]  Hasil pengurutan menurun (descending) : [50,33,28,12,5,3,1]

Sebuah algoritma dikatakan baik jika menghasilkan nilai yang benar, efektif dan

efisien. Efektif yaitu tepat sasaran, jelas dan tidak rancu dalam menjalankan aksi-aksinya

serta menghasilkan data yang benar. Efisien yaitu penghematan proses dari sebuah

algoritma, seperti running time dan penggunaan memori. Metode atau algoritma pengurutan

dapat diklasifikasikan menjadi :

1. Metode atau algoritma pengurutan internal, yaitu pengurutan yang dilakukan di

dalam larik itu sendiri. Datanya disimpan di dalam memori komputer.

2. Metode atau algoritma pengurutan eksternal, yaitu pengurutan yang datanya

disimpan di dalam disk storage. Metode ini disebut juga pengurutan arsip.

Sedangkan berdasarkan kestabilan (stability), algoritma pengurutan dapat dibagi

menjadi dua jenis, yaitu :

1. Metode pengurutan stabil (stable sorting algorithm), merupakan algoritma

pengurutan yang menjaga/mempertahankan (maintenance) urutan dari beberapa

elemen array yang bernilai sama.

2. Metode pengurutan tidak stabil (non stable sorting algorithm), merupakan metode

pengurutan yang tidak menjaga/mempertahankan (maintenance) urutan dari

beberapa elemen array yang bernilai sama. Dengan kata lain, urutan beberapa

(24)

Algoritma memiliki dua skema, yaitu iteratif dan rekursif. Iteratif yaitu algoritma yang

melakukan perulangan biasa, sedangkan rekursif adalah algoritma yang melakukan

perulangan dengan melakukan pemanggilan terhadap dirinya sendiri. Contoh algoritma

pengurutan yang termasuk dalam skema iteratif, yaitu pengurutan apung (bubble sort) dan

selection sort, Contoh algoritma pengurutan yang termasuk dalam skema rekursif, yaitu

pengurutan merge (merge sort), pengurutan heap (heap sort) dan pengurutan cepat (quick

sort). Tidak semua algoritma tersebut hanya memiliki satu skema, misalnya algoritma

pengurutan seleksi atau selection sort yang dapat menggunakan skema rekursif, namun di

dalam penelitian ini selection sort yang dibahas menggunakan skema iteratif (Fanani 2008).

2.3. Kompleksitas Algoritma

Efisiensi sebuah algoritma tergantung dari beberapa hal, diantaranya adalah :

 Kinerja CPU  Kinerja Memori  Kinerja Disk  Kinerja Jaringan

Algoritma memiliki kompleksitas, kompleksitas merupakan acuan utama utama untuk

mengetahui kecepatan dari sebuah algoritma. Kompleksitas dibagi menjadi tiga, yaitu (Rao

and Ramesh 2012) :

1. Best case (Ω), yaitu kompleksitas algoritma dimana algoritma tersebut berjalan

dalam kondisi terbaik.

2. Average case ( ), yaitu kompleksitas algoritma dimana algoritma tersebut berjalan

dalam kondisi sedang, biasanya inputnya secara acak.

3. Worst case (Ο), yaitu kompleksitas algoritma dimana algoritma tersebut berjalan

(25)

2.4. Growth Function

Kinerja sebuah algoritma biasanya di ukur dengan mengacu pada kondisi terburuknya,

yaitu worst case yang dilambangkan dengan notasi Big O. Notasi Big O adalah fungsi yang

berkaitan dengan kelajuan proses dan kelajuan pertambahan data (Suryani 2013).

Tabel 2.1 Tabel Notasi Big O

Notasi Nama Contoh Aplikasi

O(1) Konstan Menentukan apakah suatu bilangan ganjil atau

genap

O(log * n) Iterasi Logaritmik Algoritma pencarian Hopcraff dan Ullman untuk

himpunan disjoint

O(log n) Logaritmik Pencarian dalam list terurut dengan Binary

Search Algorithm

O((log n)c) Polilogaritmik Menentukan bilangan prima dengan AKS

primality test

O(n) Linear Pencarian dalam list tidak terurut

O(n log n) Linearitmik Mengurutkan list dengan Heapsort

O(n2) Kuadratik Mengurutkan list dengan Insertion Sort

O(nc),c>1 Poliomial Pencarian shortest path dengan algoritma Floyd

Warshall

O(cn) Eksponensia Pencarian solusi untuk traveling salesmen

problem

O(n!) Faktorial Menyelesaikan traveling salesmen problem

dengan menggunakan brute force

O(2cn) Dobel Eksponensial Pencarian himpunan lengkap dari AC-unifiers

(associative-commutative unifiers)

(26)

2.5. Notasi Asimptotik

Notasi asimptotik digunakan untuk menentukan kompleksitas suatu algoritma dengan

melihat waktu tempuh (running time) sebuah algoritma. Waktu tempuh algoritma

merupakan fungsi : N → R suatu algoritma dengan algoritma lainnya. Notasi asimptotik dapat dituliskan dengan beberapa simbol, yaitu :

 Notasi Big O, yaitu notasi asimptotik sebuah fungsi algoritma untuk batas atas.  Notasi Little o, yaitu notasi asimptotik sebuah fungsi algoritma untuk batas atas

namun tidak secara ketat terikat (not asymptotically tight).

 Notasi Theta ( ), yaitu notasi asimptotik sebuah fungsi algoritma untuk batas atas

dan bawah.

 Notasi Omega ( ), yaitu notasi asimptotik sebuah fungsi algoritma untuk batas

bawah, notasi ini berlawanan dengan notasi little-o.

2.6. Pengertian Selection Sort

Selection sort adalah mencari elemen yang tepat untuk diletakkan di posisi yang telah

diketahui, dan meletakkannya di posisi tersebut setelah data tersebut ditemukan. Selection

Sort Membandingkan elemen yang sekarang dengan elemen yang berikutnya sampai

dengan elemen yang terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen

sekarang maka dicatat posisinya dan kemudian ditukar(Swap) dan begitu seterusnya(Triono

2010). Dalam tesis ini penulis menambahkan 2 metode pengurutan data dengan selection

sort yang baru, yaitu:

1. Selection Sort Model Insert

2. Selection Sort Model New List

Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksian

elemen struktur data. Untuk sorting ascending (menaik), elemen yang paling kecil di antara

elemen-elemen yang belum urut, disimpan indeksnya, kemudian dilakukan pertukaran nilai

elemen dengan indeks yang disimpan tersebut dengan elemen yang paling depan yang

belum urut. Sebaliknya, untuk sorting descending (menurun), elemen yang paling besar

(27)

Algoritma selection sort memilih elemen maksimum/minimum array, lalu

menempatkan elemen maksimum/minimum itu pada awal atau akhir array (tergantung pada

urutannya ascending /descending). Selanjutnya elemen tersebut tidak disertakan pada

proses selanjutnya. Karena setiap kali selection sort harus membandingkan elemen-elemen

data, algoritma ini termasuk dalam comparison-based sorting. Seperti pada algoritma

Bubble Sort, proses memilih nilai maksimum / minimum dilakukan pada setiap pass. Jika

array berukuran N, maka jumlah pass adalah N-1 (Nugroho 2005).

Terdapat pendekatan dalam metode pengurutan dengan Selection Sort :

1. Algoritma pengurutan maksimum (maximum selection sort), yaitu memilih elemen

maksimum sebagai basis pengurutan.

2. Algoritma pengurutan minimum (minimum selection sort), yaitu memilih elemen

minimum sebagai basis pengurutan

2.7. Pengertian Merge Sort

Metode pengurutan merge sort adalah metode pengurutan lanjut, sama dengan metode

Quick Sort. Metode ini juga menggunakan 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 data

dalam sub bagian menjadi tunggal. Setelah data tidak dapat dibagi lagi, proses

penggabungan (merging) dilakukan antara sub-sub bagian dengan memperhatikan urutan

data yang diinginkan (ascending/kecil ke besar atau descending/besar ke kecil). Proses

penggabungan ini dilakukan sampai semua data tergabung dan terurut sesuai urutan yang

diiginkan. Kompleksitas algoritma merge sort adalah O(n log n)( Fenwa at all 2012).

Secara umum, algoritma merge sort dapat diimplementasikan secara rekursif. Fungsi

rekursif adalah sebuah fungsi yang didalam implementasinya memanggil dirinya sendiri.

Pemanggilan diri sendiri ini berakhir jika kondisi tertentu terpenuhi (terminated condition

is true). Pada contoh berikut ini, terminated condition dari proses rekursif mergesort akan

berakhir jika data tidak dapat dibagi lagi (data tunggal telah diperoleh). Dengan kata lain,

proses pembagian data dilakukan terus selama S.size > 1 (belum tunggal) ( Fenwa at all

(28)

Ide algoritma ini hampir mirip dengan QuickSort, yaitu melakukan partisi. Kecuali

bahwa algoritma ini melakukan partisi tanpa kriteria. Jadi, data set (X[l] ... X[r]) di partisi

langsung ke du sub data set dengan jumlah data yang sama (X[l] ... X[(l+r)/2], dan

X[(l+r)/2+1] ... X[r]). Lalu secara rekursif melakukan Merge Sort untuk masing-masing

data set. Karena kedua data set itu bisa overlapping (tidak seperti pada Quick Sort) maka

setelah kedua sub data set terurut masih memerlukan proses penggabungan (Merging).

Merging ini memerlukan ruang tambahan yaitu suatu array yang sama panjangnya dengan

panjang kedua subset untuk menyimpan hasilnya (Bhalchandra dan Deshmukh 2010).

void MergeSort(int l,int r)

{

if (l < r)

{

MergeSort(l, (l+r)/2);

MergeSort((l+r)/2,r);

Merging();

}

}

Algoritma ini memiliki kompleksitas O(n log n).

2.8. Struktur Data

Struktur data adalah cara menyimpan atau merepresentasikan data di dalam komputer agar

bisa dipakai secara efisien. Sedangkan data adalah representasi dari fakta dunia nyata. Fakta

atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam

bentuk tulisan, suara, gambar, sinyal atau simbol. Secara garis besar tipe data dapat

dikategorikan menjadi :

1. Tipe data sederhana/dasar

a. Tipe data sederhana tunggal

- Integer - Real

(29)

- Karakter

b. Tipe data sederhana majemuk misalnya string

2. Struktur data, meliputi :

a. Struktur data sederhana

- Array - Record

b. Struktur data majemuk, yang terdiri dari:

- Linier : Stack, Queue, List dan Multilist - No Linier : Pohon Biner (tree) dan Graph

Pemakaian struktur data yang tepat didalam proses pemrograman akan menghasilkan

algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan

lebih efesien dan sederhana. Struktur data yang ′′standar′′ yang biasanya digunakan

dibidang informatika adalah List, Multilist, Stack (Tumpukan), Queue (Antrian), Tree (

Pohon ), Graph ( Graf ). Struktur data yang penulisan bahas dalam tesis ini adalah struktur

data sederhana yaitu array dan struktur data majemuk yaitu list ( Wahyudi 2004 ).

a. Array

Array (larik) adalah struktur data statik yang menyimpan sekumpulan elemen yang bertipe

sama. Setiap elemen diakses langsung melalui indeksnya. Indeks Array (larik) harus tipe

data yang menyatakan keterurutan misalnya integer atau karakter. Banyaknya elemen larik

harus sudah diketahui sebelum program dieksekusi. Array merupakan suatu struktur data

yang bersifat statis. Array harus dialokasikan terlebih dahulu di dalam memory sebelum

kita memakainya.

b. List

Merupakan suatu struktur data pengembangan dari konsep ADT (Abstrak Data Type) yang

bersifat dinamis. List dapat dimanfaatkan secara effektif sesuai dengan keperluan. List juga

dapat benar – benar dihapus / dibersihkan dari memory. List sebenarnya merupakan suatu

type data tersendiri. Di bahasa Visual Studio 2010 Ultimate, List bisa berupa suatu Class

ataupun Record. Ciri – ciri utama dari List adalah, dia mempunyai minimal dua elemen

utama. Elemen – elemen itu adalah data dan pointer untuk menunjukkan ke list berikutnya (

(30)

Tabel 2.2 Perbedaan mendetail antara Array dan List

Array List

1.Pengaksesan bersifat Statis

2.volumenya selalu tetap tidak tergantung

pada jumlah data

3.alokasi memori dilakukan pada saat array

didefinisikan.

4.pembebasan memori dilakukan pada saat

program berhenti.

5.Cara akses bersifat random dengan

menggunakan nomor index.

1.Pengaksesan bersifat Dinamis

2.ukurannya berubah-ubah disesuaikan

dengan kebutuhan.

3.alokasi memori ditentukan pada saat

data baru dibuat.

4.pembebasan memori dilakukan setiap

ada penghapusan data.

5.Cara akses ke masing-masing class

data dilakukan secara linier (selalu

dimulai dari elemen pertama).

(Sumber : Sanjaya, 2001 )

2.9. Penelitian Terdahulu

Penelitian yang dilakukan oleh Sareen (2013) yang berjudul Comparison of Sorting

Algorithms (On the Basis of Average Case) dimana metode merge sort dan pengurutan lain

menggunakan memori yang lebih efisien dan kompleksitas waktu terbaik dibandingkan

metode selection sort dalam proses pengurutan data, maka dilakukan penelitian untuk

menemukan sebuah algortima sorting yang dapat memberikan kompleksitas lebih baik lagi.

Penelitian yang dilakukan oleh Tjaru & Setia (2009) yang berjudul Kompleksitas

Algoritma Pengurutan Selection Sort dan Insertion Sort, yang menerengakan bahwa

algoritma pengurutan data dengan selection sort merupakan algoritma pengurutan paling

baruk dari semua metode pengurutan yang ada, maka dengan itu penulisan menambahkan 2

metode pengurutan pengembangan dari metode selection sort yaitu selection sort model

insert dan selection sort model new list untuk dilakukan perbandingan terhadap metode

yang terbaik sebelumnya yaitu metode merge sort dan juga terhadap metode selection sort.

Kedua metode yang penulis tambahkan tersebut dilakukan pengujian dengan menggunakan

bahasa pemrograman Visual Studio 2010 Ultimate terhadap 10 sampai 100000 data dengan

(31)

BAB 3

METODOLOGI PENELITIAN

3.1. Algoritma Selection Sort

Algoritma pengurutan seleksi atau selection sort dibagi menjadi dua, yaitu :

1. Algoritma pengurutan seleksi minimum atau minimum selection sort Yaitu dengan

mencari nilai terkecil dari array dan digunakan sebagai pembanding.

2. Algoritma pengurutan seleksi maksimum atau maximum selection sort Yaitu

dengan mencari nilai terbesar dari array dan digunakan sebagai pembanding.

3.1.1. Pseudocode Minimum Selection Sort

Procedure MinSelectionSort(input/output A : Larik, input n : integer)

DEKLARASI :

i, j : integer

i min : integer

temp : integer

ALGORITMA :

for I 1 to n-1 do

i min i

for j i+1 to n do

if A[j] < A[i min]

then i min j

endif

endfor

temp A [i]

A[i] A[i min]

A[i min] temp

endfor

(32)

3.1.2 Pseudocode Maximum Selection Sort

Procedure MaxSelectionSort(input/output L : Larik, input n : integer)

DEKLARASI :

i, j : integer

i maks : integer

temp : integer

DEFINISI :

for i n downto 2 do

i maks 1

for j 2 to i do

if L[j] > L[i maks]

then i maks j

endif

endfor

temp L[i]

L[i] L[i maks]

L[i maks] temp

endfor

end procedure

Algoritma pengurutan seleksi (selection sort) adalah algoritma yang tidak

stabil,karena urutan beberapa elemen yang sama berbeda antara sebelum dan sesudah

pengurutan. Algoritma ini juga termasuk algoritma pengurutan internal, karena melakukan

sorting di dalam array itu sendiri, dan menyimpan datanya di dalam memori komputer.

Yang akan dibahas kali ini adalah menggunakan pengurutan seleksi minimum(minimum

selection sort) secara menaik (ascending), yaitu selection sort dengan menggunakan nilai

(33)

3.1.3 Loop Invariant Minimum Selection Sort Statement

Saat awal algoritma dijalankan, nilai imin berisi indeks elemen terkecil dari larik

A[1...j - 1].

Initialization

Sebelum iterasi atau pass pertama dilakukan, nilai j = i + 1, i min berisi indeks elemen

terkecil dari larik A[i...i] yang merupakan indeks elemen paling pertama larik A.  Maintenance

Sebelum iterasi ke- jth, i min berisi indeks elemen terkecil dari larik A[i...j - 1].

Kemudian setelah dijalankan, jika A[j] < A[i min] maka imin bernilai sama dengan j

dan menyimpan indeks terkecil larik A[i...j].

Termination

Sebelum iterasi ke- (n + 1) th, j = n + 1, i min berisi indeks terkecil dari elemen larik

A[i...n].

3.2. Simulasi Algoritma Pengurutan Selection Sort

Contoh, kita memiliki sebuah larik (array) (A) yang memiliki 7 buah elemen. Lariktersebut

akan diurutkan secara menaik (ascending) dengan mencari nilai minimum sebagai

pembanding.

26 19 38 3 9 13 21

1 2 3 4 5 6 7

1. Pass 1

 Cari nilai elemen terkecil dari array (larik) A[1...7] dengan membandingkan antar

nilai elemen array, didapatkan elemen terkecil A[4]= 3.

 Tukarkan dengan nilai elemen terujung (awal) yaitu A[1] Lalu elemen A[1] tersebut

sudah terurut.

3 19 38 26 9 13 21

(34)

2. Pass 2

 Cari nilai elemen terkecil dari array (larik) A[2...7] dengan membandingkan antar

nilai lemen array, didapatkan elemen terkecil A[5] = 9.

 Tukarkan dengan nilai elemen terujung (awal) yaitu A[2]. Lalu elemen A[2]

tersebut udah terurut.

3 9 38 26 19 13 21

1 2 3 4 5 6 7

3. Pass 3

 Cari nilai elemen terkecil dari array (larik) A[3...7] dengan membandingkan antar

nilai lemen array, didapatkan elemen terkecil A[6] = 13.

 Tukarkan dengan nilai elemen terujung (awal) yaitu A[3]. Lalu elemen A[3]

tersebut udah terurut.

3 9 13 26 19 38 21

4. Pass 4

 Cari nilai elemen terkecil dari array (larik) A[4...7] dengan membandingkan antar nilai lemen array, didapatkan elemen terkecil A[5] = 19.

 Tukarkan dengan nilai elemen terujung (awal) yaitu A[4]. Lalu elemen A[4]

tersebut udah terurut.

3 9 13 19 26 38 21

5. Pass 5

 Cari nilai elemen terkecil dari array (larik) A[5...7] dengan membandingkan antar

nilai lemen array, didapatkan elemen terkecil A[7] = 21.

 Tukarkan dengan nilai elemen terujung (awal) yaitu A[5]. Lalu elemen A[5] tersebut udah terurut.

3 9 13 19 21 38 26

6. Pass 6(n-1)

 Cari nilai elemen terkecil dari array (larik) A[6...7] dengan membandingkan antar

(35)

 Tukarkan dengan nilai elemen terujung (awal) yaitu A[6]. Lalu elemen A[6]

tersebut udah terurut.

3 9 13 19 21 26 38

Elemen yang tersisa yaitu elemen terakhir A[7] = 38. Elemen tersebut tidak perlu diurutkan

karena elemen tersebut berada pada posisi yang sudah terurut. Jadi array atau larik A sudah

terurut. Hasil array A yang sudah terurut yaitu :

3 9 13 19 21 26 38

3.3. Analisis dan Running Time Selection Sort

Running timealgoritma pengurutan seleksi (selectionsort) dapat dihitung dengan:

Tabel 3.1. Running Time

Selection Sort Cost Times

(36)

Keterangan :

 ti,j bernilai 1 jika kondisi if benar, 0 jika salah

( )

dapat bernilai 1 atau 0.

 Ketika kondisi Best Case maka kondisi if salah, ti,j= 0. Kondisi best case terjadi jika data dalam elemen array sudah terurut.Maka :

( ) ( )

Didapatkan notasi asimptotik best case selection sort adalah T(n)=Ω( )

 Ketika kondisi worst case maka kondisi if benar, ti,j= 1. Kondisi worst case terjadi jika data dalam elemen array terurut secara terbalik, Maka:

( ) ( )

Didapatkan notasi asimptotik best case selection sort adalah T(n)=O( )

Jadi baik dalam kondisi worst case, average case maupun best case didapatkan

kompleksitas waktu algoritma selection sort yaitu :T(n)=O( )

3.4. Selection Sort Model Inser ( Sisip )

Metode insert (sisip) dimana data paling kecil disisipkan ke elemen pertama (ascending)

dan data paling kecil disisip ke elemen terakhir (descending). Contoh, kita memiliki sebuah

larik (array) yang memiliki 7 buah elemen. Larik tersebut akan diurutkan secara menaik

(37)

3.4.1. Psedocode Selection sort Model insert

var int temp = data[index]

/* to change index of array item from i to index */

3.4.2. Simulasi Algoritma Pengurutan Selection Sort Model Insert

Contoh, kita memiliki sebuah Array ( larik ) (A) yang memiliki 7 buah elemen. Array(

larik ) tersebut akan diurutkan secara menaik (ascending) dengan mencari nilai minimum

sebagai pembanding.

26 19 38 3 9 13 21

1 2 3 4 5 6 7

Pass 1: Pilih data terkecil dari array dan sisipkan ke elemen pertama

3 26 19 38 9 13 21

1 2 3 4 5 6 7

Pass 2: Pilih data terkecil dari array dan sisipkan ke elemen kedua

3 9 26 19 38 13 21

1 2 3 4 5 6 7

(38)

3 9 13 26 19 38 21

1 2 3 4 5 6 7

Pass 4 :Pilih data terkecil dari array dan sisipkan ke elemen ke empat

3 9 13 19 26 38 21

1 2 3 4 5 6 7

Pass 5 :Pilih data terkecil dari array dan sisipkan ke elemen ke lima

3 9 13 19 21 26 38

1 2 3 4 5 6 7

Selesai array dan terurut secara Ascending

3.5. Selection Sort Model New List (Dua List)

Pilih data terkecil dari list pertama dan buang dari list pertama, pindahkan ke list baru dan

seterusnya. Contoh, kita memiliki sebuah list yang memiliki 7 buah elemen. List tersebut

akan diurutkan secara menaik (ascending) dengan mencari nilai minimum sebagai

pembanding.

3.5.1. Psedocode Selection sort with new list

function SelectionSortNewList(arrayList data)

/*add new item array to temporary array*/ temp.add(data(index))

/*remove item array with minimum data base on index*/

data.removeAt(index) end for

(39)

3.5.2. Simulasi Algoritma Pengurutan Selection Sort Model New List

Contoh, kita memiliki sebuah list (A) yang memiliki 7 buah elemen. List tersebut akan

diurutkan secara menaik (ascending) dengan mencari nilai minimum sebagai pembanding

List Pertama New List

26 19 38 3 9 13 21

New List sudah terurut secara Ascending

3.6. Penjelasan Singakat Merge Sort

Algoritma merge sort dirancang untuk memenuhi kebutuhan pengurutan jika data yang

diurutkan berjumlah banyak, dan tidak memungkinkan untuk ditampung dalam memori

komputer. Cara kerja atau konsep dari algoritma merge sort adalah menggunakan metode

rekursif dan teknik divide and conquer.

a. Rekurensi (Reccurence)

Merupakan sebuah fungsi atau prosedur yang digambarkan secara rekursif. Rekursif

adalah proses untuk memanggil dirinya sendiri. Dan fungsi running timenya dapat

digambarkan oleh recurrence (Rekurensi). Definisi rekursif disusun oleh dua bagian,

yaitu :

1. Basis, yaitu bagian yang berisi kasus yang terdefinisi secara eksplisit dan

berguna untuk menghentikan rekursif (memberikan sebuah nilai yang terdefinisi

pada fungsi rekursif).

2. Rekurens, yaitu bagian yang mendefinisikan objek dalam terminologi dirinya

sendiri.

Misalnya pada proses untuk menghitung faktorial dari n, maka:

(40)

 Rekursi : n!=n x (n-1)! ,n>0

b. Divide and Conquer

1. Divide :Membagi sebuah array menjadi dua array, sebuah problem dipecah

menjadi sub-sub problem yang memiliki kemiripan dengan masalah semula

namun berukuran lebih kecil.

2. Conquer :Menyelesaikan masalah secara rekursif, yaitu mengurutkan setiap

array.

3. Combine : Menggabungkan solusi yaitu dua array yang sudah terurut

3.6.1. Pseudocode Merge Sort

PROCEDURE MERGESORT(A, p, r)

(41)

i ← i + 1 ELSE A[k] ← R[j]

j ← j + 1

3.6.2. Loop Invariant Pada Prosedure Merge Sort  Statement

Setiap iterasi pada for (pengulang) yang terakhir, sub-array A[p...k-1] berisi nilai k-p

elemen terkecil dari array L dan R dalam keadaan yang sudah terurut. L[i] dan R[j]

merupakan elemen terkecil dari array L dan R yang tidak dicopy ke array A.  Initialization

Sebelum iterasipertama dilakukan, k = p. Sub-array A[p...k-1] berisi 0 elemen terkecil

dari array L dan R. Ketika i = j = 1, L[i] dan R[j] adalah elemen terkecil dari array

yang tidak di-copy ke array A. Kedua array L dan R dalam keadaan yang terurut

 Maintenance

Misalkan L[i] ≤ R[j], maka L[i] adalah elemen terkecil yang tidak di-copy ke array A. A[p...k-1] adalah k-p elemen terkecil, L[i] adalah (k–p+1)th elemen terkecil. Kemudian

L[i] di-copy ke A[k], A[p...k] berisi k–p+1 elemen terkecil. Secara berulang, nilai k + i

membuat perulangan (loop invariant). Jika L[i] > R[j], maka nilai R[j] di-copy ke array

A[k], dan nilai j + 1 agar pengulangan dapat terus dilakukan.  Termination

Ketika nilai k = r + 1, A[p...k -1] = A[p...r] berisi k-p elemen terkecil dalam keadaan

yang terurut. Menghasilkan k-p = r + 1 -p elemen terkecil dalam keadaan yang erurut.

Kedua array L dan R berisi n1 + n2 + 2 = r -p + 3 elemen, dan dua buah ∞ telah di-copy

kembali ke array A.

3.7. Simulasi Algoritma Merge Sort

Contoh, kita memiliki sebuah larik (array) (A) yang memiliki 4 buah elemen. Larik

tersebut akan diurutkan secara menaik (ascending). Dengan nilai p adalah indeks elemen

awal, yaitu p = 0. Nilai r adalah indeks elemen akhir, yaitu r = 3.

(42)

1. MERGESORT(A, 0, 3)

 Sesuai dengan algoritma maka nilai :  n1 = q − p + 1= 1

 n2 = r –q= 1.

(43)

DO R[j] ← A[q + j]  nilai R[1] = A[1]= 9.

R[1]= 9

 Kemudian ditambahkan L[n1 + 1] ← ∞ dan R[n2 + 1] ← ∞, sehingga

L[2] = ∞ dan R[2] = ∞. Sehingga array L dan Rberisi :

Array[1]= 12 ∞ dan array R= 9 ∞

Kedua array tersebut sudah dalam keadaan terurut.

 Nilai i dan j di inisialisasi menjadi i = 1 dan j = 1. Kemudian lakukan

pengulangan pada :

 FOR k ← p TO r

DO IF L[i] ≤ R[j]

THEN A[k] ← L[i] i ← i + 1 ELSE A[k] ← R[j]

j ← j + 1

 Untuk menggabungkan array L dan R ke array A dalam keadaan

terurut.

 Didapatkan :

o L[1] ≤ R[1], 12 ≤9 = False, maka A[0]= R[1]= 9

o L[1] ≤ R[2], 12 ≤∞= True, maka A[1]= L[1]= 12

A[0…1]= 9 12

1.2.MERGESORT(A, 2, 3)

 Kemudian diperiksa apakah jika p < r, (2 < 3), jika benar maka dihitung q = (p

+ )/2 = 2.

 Kemudian dipanggil MERGESORT(A, 2, 2), MERGESORT(A, 3, 3) dan MERGE(A, 2, 2, 3).

A[2…3]= 24 2

(44)

Kemudian diperiksa apakah jika p < r, (2< 2), karena salah maka rekursif

pada bagian ini selesai.

1.2.2. MERGESORT(A, 3, 3)

Kemudian diperiksa apakah jika p < r, (3< 3), karena salah maka rekursif

pada bagian ini selesai.

1.2.3. MERGE(A, 2, 2, 3)

 Sesuai dengan algoritma maka nilai:  n1 = q − p + 1= 1

 n2 = r –q= 1.

 Lalu buat dua buah array bernama L dan R dengan jumlah elemen  L[1 . . n1 + 1] yaitu L[1...2]

 R[1 . . n2 + 1]yaitu R[1...2]  Perulangan pada:

 FOR i ← 1 TO n1 DO L[i] ← A[p + i − 1]  nilai L[1] = A[2] = 24

L[1]= 24

 Perulangan pada:  FOR j ← 1 TO n2

DO R[j] ← A[q +j]

 nilai R[1] = A[3] = 2

R[1]= 2

 Kemudian ditambahkan L[n1 + 1] ← ∞ dan R[n2 + 1] ← ∞, sehingga L[2] = ∞ dan R[2] = ∞. Sehingga array L dan R berisi :

Array L= 24 ∞ dan array R= 2 ∞

Kedua array tersebut sudah dalam keadaan terurut.

 Nilai i dan jadi inisialisasi menjadi i= 1 dan j= 1. Kemudian lakukan pengulangan pada :

(45)

DO IF L[i] ≤ R[j]

THEN A[k] ← L[i] i ← i + 1 ELSE A[k] ← R[j]

j ← j + 1

 Untuk menggabungkan array L dan R ke array A dalam keadaan

terurut.

 Didapatkan :

o L[1] ≤ R[1], 24≤2= False, maka A[2] = R[1]= 2

o L[1] ≤ R[2], 24≤∞= True, maka A[3] = L[1]= 24

A[2…3]= 2 24

1.3. MERGE(A, 0, 1, 3)

 Sesuai dengan algoritma maka nilai :  n1 = q − p + 1= 2

 n2 = r – q= 2

 Lalu buat dua buah array bernama L dan R dengan jumlah elemen  L[1 . . n1 + 1] yaitu L[1...3]

 R[1 . . n2 + 1] yaitu R[1...3]  Perulangan pada:

 FOR i ← 1 TO n1 DO L[i] ← A[p + i − 1]

 nilai L[1] = A[0] = 9 dan L[2] = A[1] = 12.

A[1…2]= 9 12

 Perulangan pada:  FOR j ← 1 TO n2

DO R[j] ← A[p + j]

 Nilai R[1] = A[2] = 2 dan R[2] = A[3] = 24.

(46)

 Kemudian ditambahkan L[n1 + 1] ← ∞ dan R[n2 + 1] ← ∞, sehingga L[2] = ∞ dan R[2] = ∞. Sehingga array L dan R berisi :

Array L= 9 12 ∞ dan array R= 2 24 ∞

Kedua array tersebut sudah dalam keadaan terurut.

 Nilai i dan jadi inisialisasi menjadi i= 1 dan j= 1. Kemudian lakukan

pengulangan pada :

 FOR k ← p TO r

DO IF L[i] ≤ R[j]

THEN A[k] ← L[i] i ← i + 1 ELSE A[k] ← R[j]

j ← j + 1

 Untuk menggabungkan array L dan R ke array A dalam keadaan

terurut.

 Didapatkan :

o L[1] ≤ R[1],9≤2 = False, maka A[0]= R[1]= 2

o L[1] ≤ R[2], 9≤24= True, maka A[1]= L[1]= 9.

o L[2] ≤ R[2], 12≤24= True, maka A[2]= L[2]= 12

o L[3] ≤ R[2], ∞≤24= False, maka A[3]= R[2]= 24

(47)

Jika digambarkan secara sederhana maka proses eksekusi algoritma merge sort

Hasil pengurutannya adalah array A dengan elemen seperti dibawah:

A[0…3]= 2 9 12 24

3.8. Analisis Dan Running Time Merge Sort

Merge sort selalu membagi setiap array menjadi dua sub-array hingga mencapai basis,

sehingga kompleksitas dari algoritma merge sort, berlaku untuk semua kasus (Worst Case

= Best Case = Average Case).

 Untuk memudahkan, kita anggap jumlah elemen array(n) adalah kelipatan 2, jadi setiap

dilakukan divide (pemecahan menjadi dua sub-array), kedua sub-array akan berukuran

n/2.

 Basis : untuk n = 1, maka array tersebut sudah terurut dengan sendirinya.

(48)

 Conquer : Secara rekursif menyelesaikan 2 sub-array, setiap sub-array berukuran

n/2, maka bernilai 2T(n/2)

 Combine : Menggabungkan element dari sub-array ke dalam array dengan prosedur

MERGE, bernilai θ(n).

 Jumlahkan semua fungsi yang dihasilkan, sehingga dihasilkan rekurens :

{ }

 Dari rekurens tersebut di ubah untuk mendapatkan kompleksitas waktu algoritma merge sort, sehingga T(n)=O(n log n)

Catatan : log2n = 2log n

 Kompleksitas waktu tersebut dapat dijelaskan dari recursif tree berikut :

 Array awal (cn), yang memiliki dua sub-array, masing-masing bernilai T(n/2):

cn

T(n/2) T(n/2)

 Kemudian sub-array tersebut di bagi lagi menjadi dua sub-sub-array, jadi bernilai

T(n/4) dan seterusya.

cn

cn/2 cn/2

T(n/4) T(n/4) T(n/4) T(n/4)

 Di dapatkan tinggi pohon rekursif adalah log n, dan memiliki sebanyak log n+ 1 level.

Setiap level bernilai cn, sehingga cn log n+ cn.

 Koefisien tidak perlu dimasukkan, sehingga kompleksitas waktunya menjadi: T(n)=

(49)

BAB 4

HASIL DAN PEMBAHASAN

4.1. Pendahuluan

Aplikasi ini dibangun dengan menggunakan aplikasi pemrograman Visual Studio 2010.

Adapun uji coba yang dilakukan menggunakan komputer dengan spesifikasi hardware dan

software sebagai berikut :

1. Prosesor Core i7 2 GHz 2. RAM, 2 GB

3. Aplikasi Visual Studio 2010 4. OS Win 7 ultimate

4.2. Hasil Uji Coba

Pada penelitian ini dilakukan pengamatan pada 4 metode pengurutan yaitu selection sort,

selection model insert, selection sort model new list dan merge sort. Diberikan nilai input

Max Item Value 1000 dan 1000000, sedangkan nilai Max Item pada 10, 500 dan 1000

untuk masing-masing Max Item Value tersebut. Dan data yang diberikan untuk keempat

kondisi tersebut juga sama. Berikut akan ditampilkan hasil pengamatan yang

sudahdilakukan.

4.2.1 Pengurutan pada Max Item = 10

Pengurutan pada Max Item 10 dilakukan dengan membandingkan pada 2 nilai Max

(50)

Gambar 4.1 Item Tampilan hasil pada max item 10 dan Max Value 1000

a. Max Item Value = 1000

Pada kondisi max item 10 dan Max Item Value 1000 terlihat hasil pengurutan data

seperti gambar 4.2. Dari keempat metode yang digunakan dapat diamati bahwa pada

kondisi ini waktu eksekusi yang paling cepat yaitu pada metode selection sort sebesar

0,0505 x 10-3 sec, selection model insert sebesar 0,0642x 10-3 sec, selanjutnya

selection sort new list sebesar 0,0647 x 10-3 sec dan merge sort sebesar 0,0768 x 10-3

sec. Dari keempat nilai eksekusi tersebut metode marge sort memiliki waktu eksekusi

yang paling lama untuk kondisi max item 10. Dari hasil ini terlihat bahwa metode

(51)

a.Selection Sort b Selection Sort Model Insert

b.

Selection sort d. Merge Sort

Gambar 4.2 Pengurutan pada Max Item 10 Max Item Value = 1000

Pada gambar 4.3 jelas telihat perbedaan kompleksitas waktu dari keempat metode sorting

yang ditampilakan pada grafik, yang menujukan waktu terbaik pada selection sort dan

(52)

Gambar 4.3 Grafik perbandingan keempat pengurutan untuk

Max Item 10 Max Item Value = 1000

b. Max Item Value = 1000000

Pengurutan pada Max Item 10 dilakukan denganMax Item Value yaitu Max Item Value

= 1000000.

(53)

Pada kondisi Max item 10 dan Max Item Value 1000000 dengan data yang

diberikan pada keempat kondisi sama maka diperoleh hasil pengurutan seperti pada

gambar 4.5. Pada kondisi ini waktu eksekusi tercepat pada metode selection sort

sebesar 0,0611 x 10-3 sec, selanjutnya metode selection model insert sebesar 0,0650

x 10-3 sec, merge sort sebesar 0,0674 x 10-3 sec, metode selection sort model new

list 0,0931 x 10-3 sec. Pada kondisi ini metode selection sort model new list

memerlukan waktu paling lama untuk eksekusi bila dibandingkan dengan ketiga

metode lainnya. Dari hasil ini terlihat bahwa tidak ada perbedaan yang signifikan

antar keempat algoritma yang digunakan.

a. Selection sort b. Selection sort model insert

(54)

Gambar 4.5 Hasil pengurutan pada Max item 10 dan

Max Item Value 1000000

Grafik pada gambar 4.6 menunjukan perbedaan kompleksitas waktu untuk keempat metode

pengurutan tidak begitu signifikan, namun selection sort pada percobaan ini lebih unggul

dari ketiga pengurutan lainnya.

Gambar 4.6. Grafik perbandingan keempat pengurutan untuk Max Item 10 Max Item Value = 1000000

4.2.2 Pengurutanpada Max Item = 500

Pengurutan pada Max Item 500 dilakukan dengan membandingkan pada 2 nilai

(55)

Gambar 4.7 Pengurutan Pada Max Item 500 Max Item Value=1000

a. Max Item Value = 1000

Pada kondisi Max item 500 dan Max Item Value 1000 dengan data yang diberikan

pada keempat kondisi sama maka diperoleh hasil pengurutan seperti pada gambar

4.8. Pada kondisi ini waktu eksekusi tercepat pada metode merge sort sebesar 1,495

x 10-3 sec, selanjutnya selection sort new list 1,777x 10-3 sec, metode selection

model insert sebesar 1,876 x 10-3 sec dan selection sort sebesar 1,975 x 10-3 sec.

Pada kondisi ini metode selection sort memerlukan waktu paling lama untuk

(56)

a. Selection sort b. Selection sort model insert

c. Selection sort New List d. Merge Sort.

Gambar 4.8 Hasil pengurutan pada Max item 500 dan

Max Item Value 1000

Percobaan ini memperlihatkan dominasi dari merge sort jauh lebih unggul kompleksitas

waktu dari selection sort, terlihat pada grafik pada gambar 4.9. Namun selection sort model

insert dan selection sort model new list yang penulis tambahkan memliki waktu yang tidak

(57)

Gambar 4.9 Grafik perbandingan keempat pengurutan untuk Max Item 500 Max Item Value = 1000

b. Max Item Value = 1000000

Pengurutan pada Max Item 500 dilakukan dengan Max Item Value yaitu Max Item

Value = 1000000.

Gambar 4.10 Pengurutan Pada Max Item 500 Max Item Value=1000000

Pada kondisi Max item 500 dan Max Item Value 1000000 dengan data yang

(58)

gambar 4.11. Pada kondisi ini waktu eksekusi tercepat pada metode merge sort

sebesar 1,773 x 10-3 sec, selanjutnya selection sort model insert 1,799 x 10-3 sec,

metode selection model new list sebesar 1,893 x 10-3 sec dan selection sort sebesar

2,005 x 10-3 sec. Pada kondisi ini metode selection sort memerlukan waktu paling

lama untuk eksekusi bila dibandingkan dengan ketiga metode lainnya.

a. Selection sort b. Selection sort model insert

c. Selection sort New List d. Merge Sort

Gambar 4.11 Hasil pengurutan pada Max item 500 dan

(59)

Metode pengurutan yang penulis kembangkan dari motode selection sort, memiliki waktu

yang lebih baik dari selection sort yaitu selection sort model insert dan selection sort model

new list, sehingga perbedaan kompleksitas waktu dengan merge sort tidak terlalu

signifikan, bila dibandingan merge sort dengan selection sort yang begitu jauh perbedaan

kompleksitas waktunya, dapat dilihat pada grafik dibawah ini.

Gambar 4.12 Grafik perbandingan keempat pengurutan untuk Max Item 500 Max Item Value = 1000000

4.2.3 Pengurutanpada Max Item = 1000

Pengurutan pada Max Item 1000 dilakukan dengan membandingkan pada 2 nilai

(60)

Gambar 4.13 Pengurutan Pada Max Item 1000 Max Item Value=1000

a. Max Item Value = 1000

Pada kondisi Max item 1000 dan Max Item Value 1000 dengan data yang diberikan

pada keempat kondisi sama maka diperoleh hasil pengurutan seperti pada gambar

4.14. Pada kondisi ini waktu eksekusi tercepat pada metode merge sort sebesar

3,323 x 10-3 sec, metode selection model new list sebesar 3,528 x 10-3 sec,

selanjutnya selection sort model insert 3,679 x 10-3 sec dan selection sort sebesar

3,704 x 10-3 sec. Pada kondisi ini metode selection sort memerlukan waktu paling

lama untuk eksekusi bila dibandingkan dengan ketiga metode lainnya. Terlihat

bahwa metode merge sort membutuhkan waktu semakin cepat dibandingkan dengan

metode lain dengan kondisi jumlah data yang semakin besar. Perbedaan yang

dihasilkan lebih dari 1 second dengan metode lainnya. Sedangkan untuk metode

selection sort, dari hasil terlihat bahwa dengan jumlah data yang semakin besar,

waktu yang dibutuhkan metode ini juga semakin besar dibandingkan metode

(61)

a. Selection sort b. Selection sort model insert

c. Selection sort New List d. Merge Sort

Gambar 4.14 Hasil pengurutan pada Max item 1000 dan

Max Item Value 1000

Kecepatan kompleksitas waktu yang diciptakan merge sort selalu lebih baik dibandingkan

dengan ketiga pengurutan lainnya jika max item dan max item valuenya bernilai besar.

(62)

Gambar 4.15 Grafik perbandingan keempat pengurutan untuk Max Item 1000 Max Item Value = 1000

b. Max Item Value = 1000000

Pengurutan pada Max Item 1000 dilakukan dengan Max Item Value yaitu Max Item

(63)

Gambar 4.16 Pengurutan Pada Max Item 1000 Max Item Value=1000000

Pengurutan pada Max Item = 1000 dilakukan untuk data dengan Max Item Value

100000. Sedangkan data yang diberikan kepada masing-masing kondisi adalah data

yang bentuk dan jumlahnya sama. Gambar 4.17. Merupakan hasil uji coba pada

kondisi ini. Pada kondisi ini waktu eksekusi tercepat pada metode merge sort

sebesar 2,660 x 10-3 sec, selanjutnya selection sort new list 3,510 x 10-3 sec, metode

selection model insert sebesar 3,652 x 10-3 sec dan selection sort sebesar 3,909 x

10-3 sec. Pada kondisi ini metode selection sort memerlukan waktu paling lama

untuk eksekusi bila dibandingkan dengan ketiga metode lainnya. Dengan Max Item

Value yang semakin besar, metode merge sort masih lebih baik dibandingkan

dengan metode lainnya. Dari hasil ini juga terlihat bahwa, dengan jumlah data yang

semakin besar, metode selection sort membutuhkan waktu yang semakin besar

Gambar

Tabel 2.1 Tabel Notasi Big O
Tabel 2.2 Perbedaan mendetail antara Array dan List
Tabel 3.1. Running Time
Gambar 4.1 Item Tampilan hasil pada max item 10 dan Max Value 1000
+7

Referensi

Dokumen terkait

A fentiekből számos következtetés levonható és számos kérdés fölvethető: Sanders személye és tevékenysége Magyarországon a SZEB mandátumának lejárta

“Dalam hal Tenaga Kesehatan diduga melakukan kelalaian dalam menjalankan profesinya yang menyebabkan kerugian kepada penerima pelayanan kesehatan, perselisihan yang

Hasil penelitian menunjukkan bahwa pengembang berperan aktif dalam mengimplementasikan rekomendasi penanganan dampak lalu lintas, utamanya penanganan dampak lalu lintas

KODE 1 2 5 6 URAIAN NILAI 7 4 NILAI NILAI MUTASI NILAI BERTAMBAH BERKURANG SALDO PER 30 JUNI 2019 SALDO PER 1 JANUARI 2019 SAT.. KUANTITAS KUANTITAS

Kenyataan ini barangkali cukup sebagai pertimbangan untuk menyatakan bahwa praktik kawin lari Sasak tersebut dari perspektif hukum Islam berpotensi tidak baik dan

Berdasarkan hasil penelitian yang telah dilakukan maka penelitian dapat menyimpulkan hasil dari penelitian sebagai berikut Ada pengaruh yang singnifikan antara

Demikian juga halnya dalam proses pembelajaran PAK guru dapat menggunakan model pembelajaran picture and picture yang didesain dengan menggunakan bahan utama adalah

dapat melemahkan atau menjadikan seseorang tidak mampu dan memerlukan orang lain untuk melakukan perawatan kebersihan secara total (Potter, 2005). Pityriasis versicolor.. a)