• 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: 2019

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

Copied!
9
0
0

Teks penuh

(1)

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

(2)

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.

(3)

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.

(4)

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)

(5)

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

(6)

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).

(7)

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

(8)

- 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

(9)

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

Gambar

Tabel 2.1 Tabel Notasi Big O
Tabel 2.2 Perbedaan mendetail antara Array dan List

Referensi

Dokumen terkait

Sikap masyarakat terhadap Program Keluarga Harapan adalah positif dengan nilai 0,91 dilihat dari penilaian dan tanggapan masyarakat yang setuju dengan dilaksanakannya Program

Studi ini dimaksudkan dengan menjawab permasalahan: ( 1) Adakah pengaruh antara kreatifitas guru terhadap hasil belajar aksara Jawa kelas IV MI Tarbiyatul Aulad Jombor

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

Selain itu, mereka mendorong teman –teman mereka agar membeli barang atau jasa peruahaan atau merekomendasikan perusahaan tersebut pada orang lain, dengan begitu

Mempromosikan keberlanjutan pertumbuhan ekonomi yang inklusif dan berkelanjutan, kesempatan kerja yang menyeluruh, produktif, dan pekerjaan yang layak untuk semua.

Setelah penuh dengan adukan beton, dilakukan dengan menusuk – nusuk beton tersebut 10x supaya adukan beton tersebut padat dan rata, akan tetapi perlu

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