Perbandingan Algoritma Cocktail Shaker Sort dan 4 Way Merge Sort Dalam Pengurutan Data

(1)

LISTING PROGRAM COCKTAIL SHAKER SORT

Imports System.Data.Odbc

Imports System.Data

Public Class cocktail Dim k As Integer

Dim insertquery As String

Dim deletequery As String

Dim hasil As Integer

Dim hasil_delete As Integer

Dim detik As Double

Private Sub cocktail_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load getConnString()

Label7.Visible = False

Label6.Visible = False

Label4.Visible = False

Label5.Visible = False

End Sub

Public Function CocktailSortNumber(ByVal ListofNumber As List(Of Integer)) As List(Of Integer)

Dim swaps As Boolean = True

While swaps = True

swaps = False

For i As Integer = 0 To ListofNumber.Count - 2 If ListofNumber(i) > ListofNumber(i + 1) Then

Dim temp As Integer = ListofNumber(i) ListofNumber(i) = ListofNumber(i + 1) ListofNumber(i + 1) = temp

swaps = True

End If

Next

swaps = False

For i As Integer = ListofNumber.Count - 2 To 0 Step -1 If ListofNumber(i) > ListofNumber(i + 1) Then

Dim temp As Integer = ListofNumber(i) ListofNumber(i) = ListofNumber(i + 1) ListofNumber(i + 1) = temp

swaps = True

End If


(2)

End While

Return ListofNumber End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click Label6.Visible = True

Label7.Visible = True

Label4.Visible = True

Label5.Visible = True

Label5.Text = txtjumangka.Text

Try

openConn()

deletequery = ("delete from angka") cmd = New OdbcCommand(deletequery, conn) hasil_delete = cmd.ExecuteNonQuery deletequery = ("delete from cocktail") cmd = New OdbcCommand(deletequery, conn) hasil_delete = cmd.ExecuteNonQuery

Dim randomG As New Random

Dim ListOfInteger As New List(Of Integer) For i As Integer = 1 To txtjumangka.Text

insertquery = ("insert into angka values('','" & randomG.Next(0, 100000) & "')")

cmd2 = New OdbcCommand(insertquery, conn) hasil = cmd2.ExecuteNonQuery

Next

cmd12 = New OdbcCommand("select * from angka order by id_angka ASC", conn)

rd12 = cmd12.ExecuteReader While rd12.Read

ListOfInteger.Add(rd12.Item("angka")) End While


(3)

oWatch.Start() ''Sort and format

Dim outpt2 As String = ""

For Each bub As String In CocktailSortNumber(ListOfInteger) outpt2 += bub & " "

insertquery = ("insert into cocktail values('','" & bub &

"')")

cmd2 = New OdbcCommand(insertquery, conn) hasil = cmd2.ExecuteNonQuery

Next

oWatch.Stop()

detik = Val(oWatch.ElapsedMilliseconds.ToString / 1000)

Label6.Text = detik & " Detik"

cmd = New OdbcCommand("SELECT * FROM waktu_cocktail WHERE jum_angka = '" & txtjumangka.Text & "'", conn)

rd = cmd.ExecuteReader If rd.HasRows Then

insertquery = ("UPDATE waktu_cocktail SET waktu='" & detik & "' WHERE jum_angka='" & txtjumangka.Text & "'")

cmd2 = New OdbcCommand(insertquery, conn) hasil = cmd2.ExecuteNonQuery

Else

insertquery = ("insert into waktu_cocktail values('','" & txtjumangka.Text & "','" & detik & "')")

cmd2 = New OdbcCommand(insertquery, conn) hasil = cmd2.ExecuteNonQuery

End If

Dim dt As New DataTable

GetData(dt, "select angka from angka order by id_angka ASC") dgsebelum.DataSource = dt

dgsebelum.Columns(0).HeaderText = "Angka"

dgsebelum.Columns(0).Width = 550 Dim dt2 As New DataTable

GetData(dt2, "select angka from cocktail order by id_cokctail ASC")

dgsesudah.DataSource = dt2

dgsesudah.Columns(0).HeaderText = "Angka"

dgsesudah.Columns(0).Width = 550 Catch ex As Exception

MessageBox.Show(ex.Message) End Try


(4)

End Sub

Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Label2.Click End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click Form2.Show()

End Sub

Private Sub chartbanding_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles chartbanding.Click Form1.Show()

End Sub

Private Sub dgsebelum_CellContentClick(ByVal sender As System.Object,

ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles

dgsebelum.CellContentClick End Sub

Private Sub txtjumangka_TextChanged(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles txtjumangka.TextChanged End Sub

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Label1.Click End Sub


(5)

LISTING PROGRAM 4 WAY MERGE SORT

Imports System.Data.Odbc

Imports System.Data

Public Class mergesort Dim tmp As Integer

Dim tmp2 As Integer

Dim tmp3 As Integer

Dim tmp4 As Integer

Dim tmp5 As Integer

Dim insertquery As String

Dim deletequery As String

Dim hasil As Integer

Dim hasil_delete As Integer

Dim bagi As Integer

Dim bagi2 As Integer

Dim bagi3 As Integer

Dim bagi4 As Integer

Dim detik As Double

Private Sub mergesort_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load getConnString()

Label7.Visible = False

Label6.Visible = False

Label4.Visible = False

Label5.Visible = False

End Sub

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click Label6.Visible = True

Label7.Visible = True

Label4.Visible = True

Label5.Visible = True

Try

openConn()

deletequery = ("delete from way1") cmd = New OdbcCommand(deletequery, conn) hasil_delete = cmd.ExecuteNonQuery closeConn()

Catch ex As Exception

MessageBox.Show(ex.Message) End Try


(6)

Try

openConn()

deletequery = ("delete from way2") cmd = New OdbcCommand(deletequery, conn) hasil_delete = cmd.ExecuteNonQuery closeConn()

Catch ex As Exception

MessageBox.Show(ex.Message) End Try

Try

openConn()

deletequery = ("delete from way3") cmd = New OdbcCommand(deletequery, conn) hasil_delete = cmd.ExecuteNonQuery closeConn()

Catch ex As Exception

MessageBox.Show(ex.Message) End Try

Try

openConn()

deletequery = ("delete from way4") cmd = New OdbcCommand(deletequery, conn) hasil_delete = cmd.ExecuteNonQuery closeConn()

Catch ex As Exception

MessageBox.Show(ex.Message) End Try

Try

openConn()

deletequery = ("delete from way_akhir") cmd = New OdbcCommand(deletequery, conn) hasil_delete = cmd.ExecuteNonQuery closeConn()

Catch ex As Exception

MessageBox.Show(ex.Message) End Try

Try

openConn()

cmd11 = New OdbcCommand("SELECT COUNT(*) AS jum_angka FROM angka", conn)

rd11 = cmd11.ExecuteReader rd11.Read()


(7)

bagi = Math.Ceiling(rd11.Item("jum_angka") / 4) bagi2 = Val(bagi + bagi)

bagi3 = Val(bagi2 + bagi) bagi4 = Val(bagi3 + bagi)

cmd12 = New OdbcCommand("select * from angka order by id_angka ASC LIMIT 0," & bagi & "", conn)

rd12 = cmd12.ExecuteReader While rd12.Read

insertquery = ("insert into way1 values('','" & rd12.Item("id_angka") & "','" & rd12.Item("angka") & "')") cmd2 = New OdbcCommand(insertquery, conn) hasil = cmd2.ExecuteNonQuery

End While

cmd13 = New OdbcCommand("select * from angka order by id_angka ASC LIMIT " & bagi & "," & bagi & "", conn)

rd13 = cmd13.ExecuteReader While rd13.Read

insertquery = ("insert into way2 values('','" & rd13.Item("id_angka") & "','" & rd13.Item("angka") & "')") cmd2 = New OdbcCommand(insertquery, conn) hasil = cmd2.ExecuteNonQuery

End While

cmd14 = New OdbcCommand("select * from angka order by id_angka ASC LIMIT " & bagi2 & "," & bagi & "", conn)

rd14 = cmd14.ExecuteReader While rd14.Read

insertquery = ("insert into way3 values('','" & rd14.Item("id_angka") & "','" & rd14.Item("angka") & "')")

cmd2 = New OdbcCommand(insertquery, conn) hasil = cmd2.ExecuteNonQuery

End While

cmd15 = New OdbcCommand("select * from angka order by id_angka ASC LIMIT " & bagi3 & "," & bagi & "", conn)

rd15 = cmd15.ExecuteReader While rd15.Read

insertquery = ("insert into way4 values('','" & rd15.Item("id_angka") & "','" & rd15.Item("angka") & "')")

cmd2 = New OdbcCommand(insertquery, conn) hasil = cmd2.ExecuteNonQuery

End While

Dim output As New List(Of Integer)

cmd = New OdbcCommand("select angka from way1 order by id_angka ASC", conn)

rd = cmd.ExecuteReader While rd.Read

output.Add(rd("angka")) End While


(8)

cmd3 = New OdbcCommand("select angka from way2 order by id_angka ASC", conn)

rd3 = cmd3.ExecuteReader While rd3.Read

output2.Add(rd3("angka")) End While

Dim output3 As New List(Of Integer)

cmd6 = New OdbcCommand("select angka from way3 order by id_angka ASC", conn)

rd6 = cmd6.ExecuteReader While rd6.Read

output3.Add(rd6("angka")) End While

Dim output4 As New List(Of Integer)

cmd8 = New OdbcCommand("select angka from way4 order by id_angka ASC", conn)

rd8 = cmd8.ExecuteReader While rd8.Read

output4.Add(rd8("angka")) End While

Dim output5 As New List(Of Integer) 'watch

Dim oWatch As New Stopwatch oWatch.Start()

For i As Integer = 0 To output.Count - 1

For j As Integer = i + 1 To output.Count - 1 If output(i) > output(j) Then

tmp = output(i) output(i) = output(j) output(j) = tmp End If

Next

Next

For i As Integer = 0 To output.Count - 1 output5.Add(output(i))

Next

For k As Integer = 0 To output2.Count - 1

For l As Integer = k + 1 To output2.Count - 1 If output2(k) > output2(l) Then

tmp2 = output2(k) output2(k) = output2(l) output2(l) = tmp2 End If

Next

Next

For k As Integer = 0 To output2.Count - 1 output5.Add(output2(k))


(9)

Next

For m As Integer = 0 To output3.Count - 1

For n As Integer = m + 1 To output3.Count - 1 If output3(m) > output3(n) Then

tmp3 = output3(m) output3(m) = output3(n) output3(n) = tmp3 End If

Next

Next

For m As Integer = 0 To output3.Count - 1 output5.Add(output3(m))

Next

For o As Integer = 0 To output4.Count - 1

For p As Integer = o + 1 To output4.Count - 1 If output4(o) > output4(p) Then

tmp4 = output4(o) output4(o) = output4(p) output4(p) = tmp4 End If

Next

Next

For o As Integer = 0 To output4.Count - 1 output5.Add(output4(o))

Next

For y As Integer = 0 To output5.Count - 1

For z As Integer = y + 1 To output5.Count - 1 If output5(y) > output5(z) Then

tmp = output5(y)

output5(y) = output5(z) output5(z) = tmp

End If

Next

Next

oWatch.Stop()

For y As Integer = 0 To output5.Count - 1

insertquery = ("insert into way_akhir values('','" & output5(y) & "')")

cmd2 = New OdbcCommand(insertquery, conn) hasil = cmd2.ExecuteNonQuery

Next

detik = Val(oWatch.ElapsedMilliseconds.ToString) / 1000

Label6.Text = detik & " Detik"

cmd = New OdbcCommand("SELECT * FROM waktu_4merge WHERE jum_angka = '" & txtjumangka.Text & "'", conn)


(10)

rd = cmd.ExecuteReader If rd.HasRows Then

insertquery = ("UPDATE waktu_4merge SET waktu='" & detik &

"' WHERE jum_angka='" & txtjumangka.Text & "'")

cmd2 = New OdbcCommand(insertquery, conn) hasil = cmd2.ExecuteNonQuery

Else

insertquery = ("insert into waktu_4merge values('','" & txtjumangka.Text & "','" & detik & "')")

cmd2 = New OdbcCommand(insertquery, conn) hasil = cmd2.ExecuteNonQuery

End If

Dim dt As New DataTable

GetData(dt, "select angka from angka order by id_angka ASC") dgsebelum.DataSource = dt

dgsebelum.Columns(0).HeaderText = "Angka"

dgsebelum.Columns(0).Width = 550 Dim dt2 As New DataTable

GetData(dt2, "select angka from way_akhir order by id_way_akhir ASC")

dgsesudah.DataSource = dt2

dgsesudah.Columns(0).HeaderText = "Angka"

dgsesudah.Columns(0).Width = 550 closeConn()

Catch ex As Exception

MessageBox.Show(ex.Message) End Try

Label5.Text = txtjumangka.Text End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click Form3.Show()

End Sub

Private Sub chartbanding_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles chartbanding.Click Form1.Show()

End Sub

Private Sub txtjumangka_TextChanged(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles txtjumangka.TextChanged End Sub

Private Sub dgsebelum_CellContentClick(ByVal sender As System.Object,

ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles

dgsebelum.CellContentClick End Sub


(11)

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Label1.Click End Sub


(12)

DAFTAR PUSTAKA

Aulia, R. 2006. Analisis Kecepatan Sorting dengan Notasi Big O. Bandung: Program Studi Teknik Informatika, Institut Teknologi Bandung.

Black, P.E. & Bockholt, B. 2009. "Bidirectional Bubble Sort". Dictionary of Algorithms and Data Structures. National Institute of Standards and Technology.

Cormen, T. H. 2009. Introduction to Algorithms Third Edition. London: MIT Press. Erzandi, M.O. 2009. Algoritma Pengurutan Dalam Pemrograman. Bandung: Program

Studi Teknik Informatika, Institut Teknologi Bandung.

Indrayana & Ihsan, M.F. 2005. Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting).Bandung: Program Studi Teknik Informatika, Institut Teknologi Bandung.

Knuth, D. 1973. "Sorting by Exchanging". Sorting and Searching. The Art of Computer Programming 3 (1st ed.). Addison-Wesley. pp. 110–111. ISBN 0-201-03809-9.

Knuth, D. 1998. "Section 5.2.4: Sorting by Merging". Sorting and Searching. The Art of Computer Programming 3 (2nd ed.). Addison-Wesley. pp. 158–168. ISBN 0-201-89685-0.

Kuswadi & Erna, M. 2004. Delapan Langkah dan Tujuh Alat Statistik untuk Peningkatan Mutu Berbasis Komputer. Elex Media Komputindo : Jakarta. Munir, R. 2005. Diktat Kuliah IF2251 Strategi Algoritmik. Bandung : Lab. Ilmu dan

Rekayasa Komputasi, Departemen Teknik Informatika, Institut Teknologi Bandung.

Putranto, D.D. 2007. Pengkajian Algoritma Pengurutan Tanpa Pembandingan Counting Sort dan Radix Sort. Bandung: Program Studi Teknik Informatika, Institut Teknologi Bandung.

Satzinger J.W., Jackson R.B. & Burd S.D. 2012. System Analysis and Design in a Changing World Seventh Edition. Cengage Learning. ISBN 978-1-305-11720-4. Sedgewick, R. & Wayne, K. 2011. Algorithms Fourth Edition. Boston: Princeton

University.


(13)

Suarga. 2012. Algoritma dan Pemrograman. Andi : Yogyakarta.

Tjaru, S.N.B. 2009. Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort. Bandung: Program Studi Teknik Informatika, Institut Teknologi Bandung. Utami, E. & Raharjo, S. 2004. Logika Algoritma dan Implementasinya dalam bahasa

Python di GNU/Linux. Andi : Yogyakarta.

Whitten, J.L. & Bentley L.D. 2007. Systems Analysis & Design for the Global Enterprise Seventh Edition. McGraw-Hill : United Kingdom.


(14)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1. Analisis Sistem

Analisis sistem merupakan tahap yang sangat penting karena tahap ini berfungsi untuk menganalisis sistem yang dapat membantu dalam mengevaluasi sistem dan mendeskripsikan pengembangan sistem. Dalam tugas akhir ini, ada dua fase analisis yang dilakukan oleh penulis, yaitu: analisis masalah dan analisis kebutuhan. Analisis masalah dilakukan untuk memahami sebuah permasalahan dan cara memecahkan permasalahan yang akan diteliti. Analisis kebutuhan dilakukan untuk mengidentifikasi data apa dan proses apa yang dibutuhkan pada sistem dan menjelaskan fungsi-fungsi yang mampu dikerjakan oleh sistem.

3.1.1. Analisis Masalah

Analisis masalah berfungsi untuk mempelajari permasalahan yang ada secara terperinci. Masalah dalam penelitian ini adalah bagaimana membandingkan running time dan kompleksistas waktu menggunakan algoritma cocktail shaker sort dan 4 way merge sort.

Gambar 3.1 merupakan diagramIshikawa (fish bone) disebut juga diagram cause and effect. Diagram ishikawa bertujuan untuk mencari faktor-faktor yang mungkin menjadi penyebab dari suatu masalah (Kuswadi & Erna, 2004). Jika diketahui hubungan antara sebab dan akibat dari suatu masalah maka pemecahan masalah akan mudah ditentukan. Terdapat 3 bagian penting dalam diagramishikawa:

1. Bagian kepala berfungsi sebagai akibat (effect), yaitu masalah yang ingin dianalisis.

2. Bagian tulang berfungsi sebagai penyebab utama (main cause), yaitu faktor-faktor penyebab terjadinya masalah.


(15)

3. Bagian panah pada tulang berfungsi sebagai pernyataan sekunder dari penyebab utama.

Gambar 3.1. Diagram Ishikawa

3.1.2. Analisis kebutuhan

Analisis kebutuhan terbagi menjadi dua, yaitu analisis kebutuhan fungsional dan non-fungsional. Kebutuhan fungsional mendeskripsikan aktifitas yang disediakan sistem, sedangkan kebutuhan non-fungsional mendeskripsikan fitur, karakteristik dan batasan lainnya.

3.1.2.1. Kebutuhan fungsional

Kebutuhan fungsional merupakan deskripsi dari aktivitas dan layanan yang sistem harus berikan. Hal yang menjadi kebutuhan fungsional dalam pengurutan data acak ini adalah:


(16)

2. Sistem mampu menghitung runningtime dari algoritma cocktail shaker sort dan 4 way merge sort.

3. Sistem mampu menampilkan grafik jumlah data yang diurutkan vs running time dari algoritma cocktail shaker sort dan 4 way merge sort dan grafik perbandingan kedua algoritma tersebut.

3.1.2.2. Kebutuhan non-fungsional

Kebutuhan non-fungsional mencakup karakteristik-karakteristik sebagai berikut (Whitten and Bentley, 2007):

1. Performa, sistem yang akan dibangun dapat melaksanakan proses/tugas dengan waktu yang efisien.

2. Desain, sistem yang akan dibangun harus sederhana agar memudahkan user dalam menggunakannya.

3. Ekonomi, sistem yang akan dibangun harus bekerja dengan baik dan sederhana sehingga tidak perlu mengeluarkan biaya tambahan dalam menggunakannya. 4. Informasi, sistem harus mampu menyediakan informasi yang dibutuhkan oleh

user (pengguna).

5. Pelayanan, sistem yang akan dibangun harus bisa dikembangkan menjadi sistem yang lebih baik lagi bagi pihak yang ingin mengembangkannya.

3.2. Pemodelan sistem

Pemodelan sistem merupakan proses penyerderhanan dari sebuah sistem nyata agar lebih mudah untuk dianalisis dan dipahami. Pemodelan untuk membangun sistem perangkat lunak yang menggunakan pemrograman berorientasi objek adalah Unified Modelling Language (UML). UML muncul karena adanya kebutuhan pemodelan visual untuk menspesifikasikan, menggambarkan, membangun, dan dokumentasi dari sistem perangkat lunak.

UML merupakan bahasa visual untuk pemodelan dan komunikasi mengenai sebuah sistem dengan menggunakan diagram. Pemodelan sistem menggunakan UML dalam perancangan sistem ini, yaitu use case diagram, activity diagram dan sequence diagram.


(17)

3.2.1. Use case diagram

Use case adalah sebuah kegiatan yang dilakukan oleh sistem, biasanya berfungsi untuk menanggapi permintaan dari pengguna sistem (Satzinger et al, 2012). Use case diagram menggambarkan fungsionalitas yang diharapkan dari sebuah sistem. Yang tekankan adalah “apa” yang dibuat sistem, dan bukan “bagaimana” sebuah use case menerangkan sebuah interaksi antar actor dengan system. Use case merupakan sebuah pekerjaan tertentu, misalnya: login ke sistem, meng-create sebuah daftar belanja, dan lain-lain. Seorang sebuah actor adalah sebuah entitas manusia atau mesin yang berinteraksi dengan sistem untuk melakukan pekerjaan-pekerjaan tertentu. Use case diagram algoritma cocktail shaker sort dan 4 way merge sort dapat dilihat pada Gambar 3.2.

user

Input jumlah data Data sebelum diurutkan

Data terurut menggunakan algoritma 4 Way Merge Sort

Running Time Cocktail Shaker Sort Data terurut menggunakan algoritma Cocktail Shaker Sort

Running Time 4 Way Merge Sort

Chart Perbandingan Algoritma

Chart Cocktail Shaker Sort Chart 4 Way Merge Sort

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>> <<include>>

<<extend>> <<extend>>


(18)

3.2.2. Activity diagram

Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana aktivitas berakhir. Activity diagram sesungguhnya merupakan bentuk khusus dari state machine yang bertujuan memodelkan komputasi-komputasi dan aliran-aliran kerja yang terjadi dalam sistem/perangkat lunak yang sedang dikembangkan. Activity diagram algoritma cocktail shaker sort dan 4 way merge sort dapat dilihat pada Gambar 3.3.

User System

Inputkan jumlah data

Running time algoritma cocktail shaker sort dan 4 way merge sort

Menampilkan data acak

Mengurutkan data berdasarkan algoritma cocktail shaker sort dan 4 way merge sort

Chart algoritma cocktail shaker sort dan 4 way merge sort

Chart perbandingan algoritma

Hasil pengurutan algoritma cocktail shaker sort dan 4 way merge sort


(19)

3.2.3. Sequence diagram

Sequence diagram termasuk kedalam kategori diagram behavior, yaitu diagram yang berfungsi untuk menampilkan prilaku software. Sequence diagram menggambarkan bagaimana objek saling berinteraksi melalui message dalam eksekusi operation, untuk satu buah use case. Diagram ini mengilustrasikan bagaimana message dikirim dan diterima diantara objek, dan di urutan yang mana. Sequence diagram membantu untuk menggambarkan data yang masuk dan keluar sistem. Sequence diagram algoritma cocktail shaker sort dan 4 way merge sort dapat dilihat pada Gambar 3.4.

Gambar 3.4. Sequence Diagram 3.3. Perancangan Sistem

Perancangan sistem merupakan tahap selanjutnya setelah analisa sistem untuk mendapatkan gambaran jelas tentang apa yang akan dikerjakan pada analisa sistem. Perancangan sistem yang dilakukan menggunakan flowchart untuk menggambarkan lebih rinci tentang bagaimana setiap langkah dari algoritma coktail shaker sort dan 4 way merge sort.


(20)

3.3.1. Flowchart sistem

Flowchart sistem adalah alur proses sistem yang akan dirancang dengan menggunakan kedua algoritma tersebutdi tunjukkan pada Gambar 3.5.

Start

Input banyak data yang ingin

diurutkan

Running Time

Chart Cocktail Shaker Sort dan 4 Way Merge Sort

End

Chart Perbandingan Cocktail Shaker Sort dan

4 Way Merge Sort Data acak dan

terurut


(21)

3.3.2. Flowchart algoritma cocktail shaker sort

Langkah-langkah pengurutan data untuk algoritma cocktail shaker sort di tunjukkan pada Gambar 3.6.

Start Data [n] Bandingkan Data a[i],a[i+1] Swap a[i]>a[i+1] Yes No temp=a[i] a[i]=a[i+1] a[i+1]=temp Iterasi 1 for i=0 to n-2

Iterasi 2 for i=n-2 to 0 Data terbesar disebelah kanan Bandingkan Data a[i],a[i+1] Swap a[i]>a[i+1] Yes temp=a[i] a[i]=a[i+1] a[i+1]=temp Data terbesar disebelah kiri No Hasil pengurutan Cocktail Shaker Sort


(22)

Gambar 3.6. Flowchart Algoritma Cocktail Shaker Sort

3.3.3. Flowchart algoritma 4 way merge sort

Langkah-langkah pengurutan data untuk algoritma 4 way merge sort di tunjukkan pada Gambar 3.7.

Start

Data[n]

Bagi array menjadi 4 bagian

Sub array diurutkan secara

terpisah

Kombinasi dan Gabungkan

End

Hasil pengurutan 4 Way Merge

Sort

Gambar 3.7. Flowchart Algoritma 4 Way Merge Sort

3.4. P

erancangan Struktur Tabel

Perancangan struktur tabel digunakan untuk mempermudah pengembangan dalam merancang database yang akan digunakan dalam sistem. Tabel yang digunakan dalam sistem ini yaitu:

Tabel 3.1. Struktur Tabel Angka No. Nama Field Tipe Data Field


(23)

(24)

Tabel 3.2. Struktur Tabel Cocktail No. Nama Field Tipe Data Field

1. id_cocktail int 10

2. angka int 10

Tabel 3.3. Struktur Tabel waktu_cocktail No. Nama Field Tipe Data Field

1. id_waktu_cocktail int 10

2. jum_angka int 10

3. waktu varchar 10

Tabel 3.4. Struktur Tabel way1 No. Nama Field Tipe Data Field

1. id_way1 int 10

2. id_angka int 10

3. angka int 10

Tabel 3.5. Struktur Tabel way2 No. Nama Field Tipe Data Field

1. id_way2 int 10

2. id_angka int 10

3. angka int 10

Tabel 3.6. Struktur Tabel way3

No. Nama Field Tipe Data Field

1. id_way3 int 10

2. id_angka int 10


(25)

Tabel 3.7. Struktur Tabel way4

No. Nama Field Tipe Data Field

1. id_way4 int 10

2. id_angka int 10

3. angka int 10

Tabel 3.8. Struktur Tabel way_akhir

No. Nama Field Tipe Data Field 1. id_way_akhir int 10

2. angka int 10

Tabel 3.9. Struktur Tabel waktu_4merge No. Nama Field Tipe Data Field

1. id_waktu4merge int 10

2. jum_angka int 10

3. waktu varchar 10

3.5.

Perancangan Antarmuka

3.5.1. Menu utama

Menu utama digunakan untuk menampilkan menu-menu aplikasi yang telah dirancang dan merupakan halaman awal saat program dijalankan. Pada menu utama terdapat 3 bagian yaitu: File, Algoritma dan Chart. Perancangan menu utama penguna dapat dilihat pada Gambar 3.8.


(26)

Gambar 3.8. Perancangan Menu Utama

Keterangan:

Tabel 3.10. Keterangan Rancangan Menu Utama

No Jenis Objek Keterangan

1 Judul Menu

(Label) Judul aplikasi yang akan dirancang 2 Menu File

(Menu Strip) Terdiri dari 2 bagian sub menu yaitu : About us dan keluar 3 Menu Algoritma

(Menu Strip)

Terdiri dari 2 bagian sub menu yaitu : cocktail shaker sort dan 4 way merge sort

4 Menu Chart (Menu Strip)

Terdiri dari 2 bagian sub menu yaitu : cocktail shaker sort dan 4 way merge sort

3.5.2. Menu file

Menu File digunakan untuk menampilkan profile dari programmer dan untuk keluar dari aplikasi. Menu file memiliki beberapa bagian yaitu: About us dan keluar.


(27)

3.5.3. Menu algoritma

Menu algoritma digunakan untuk mengurutkan data dengan algoritma cocktail shaker sort dan 4 way merge sort. Menu algoritma memiliki beberapa bagian yaitu: cocktail shaker sort dan 4 way merge sort. Perancangan menu algoritma penguna dapat dilihat pada Gambar 3.9 dan Gambar 3.10.

Gambar 3.9. Perancangan Menu Algoritma Cocktail Shaker Sort

Keterangan:

Tabel 3.11. Tabel Perancangan Algoritma Cocktail Shaker Sort

No Jenis Objek Keterangan

1 Judul Sub Menu

Algoritma (Label) Judul sub menu aplikasi yang akan dirancang 2 Jumlah Data (Text

Box)

Inputkan jumlah data yang ingin diurutkan 3 Jalankan (Button) Untuk mulai menjalankan proses pengurutan data 4 Sebelum diurutkan

(Data Grid View)

Untuk menampilkan data acak sesuai dengan jumlah data yang diinputkan


(28)

Tabel 3.11. Tabel Perancangan Algoritma Cocktail Shaker Sort (Lanjutan)

No Jenis Objek Keterangan

5 Sesudah diurutkan (Data Grid View)

Untuk menampilkan data yang sudah dalam keadaan terurut sesuai dengan jumlah data yang diinputkan

6 Running Time (Label) Untuk menampilkan berapa lama waktu yang dibutuhkan dlama pengurutan data

7 Jumlah data (Label) Untuk menampilkan data yang diinputkan user 8 Chart Perbandingan

(Button)

Untuk menampilkan grafik perbandingan antara cocktail shaker sort dengan 4 way merge sort 9 Chart Cocktail Shaker

Sort (Button)

Untuk menampilkan grafik cocktail shaker sort

.Gambar 3.10. Perancangan Menu Algoritma 4 Way Merge Sort

Keterangan:

Tabel 3.12. Tabel Perancangan Algoritma 4 Way Merge Sort

No Jenis Objek Keterangan

1. Judul Sub Menu

Algoritma (Label) Judul sub menu aplikasi yang akan dirancang 2. Jumlah Data (Text

Box)

Inputkan jumlah data yang ingin diurutkan 3. Jalankan (Button) Untuk mulai menjalankan proses pengurutan data


(29)

Tabel 3.12. Tabel Perancangan Algoritma 4 Way Merge Sort (Lanjutan)

No Jenis Objek Keterangan

4. Sebelum diurutkan (Data Grid View)

Untuk menampilkan data acak sesuai dengan jumlah data yang diinputkan

5. Sesudah diurutkan (Data Grid View)

Untuk menampilkan data yang sudah dalam keadaan terurut sesuai dengan jumlah data yang diinputkan

6. Running Time (Label) Untuk menampilkan berapa lama waktu yang dibutuhkan dlama pengurutan data

7. Jumlah data (Label) Untuk menampilkan data yang diinputkan user 8. Chart Perbandingan

(Button)

Untuk menampilkan grafik perbandingan antara cocktail shaker sort dan 4 way merge sort 9. Chart 4 Way Merge

Sort (Button)

Untuk menampilkan grafik 4 Way Merge Sort

3.5.4. Menu chart

Menu chart digunakan untuk menampilkan grafik antara banyak data yang diurutkan dan waktu eksekusi dari algoritma cocktail shaker sort dan 4 way merge sort. Selain itu, menu chart juga menampilkan grafik perbandingan hasil dari algoritma cocktail shaker sort dan 4 way merge sort. Menu chart memiliki beberapa bagian yaitu: cocktail shaker sort, 4 way merge sort, dan perbandingan. Perancangan menu chart penguna dapat dilihat pada Gambar 3.11, Gambar 3.12 dan Gambar 3.13.


(30)

(31)

Keterangan:

Tabel 3.13. Tabel Perancangan Chart Algoritma Cocktail Shaker Sort

No Jenis Objek Keterangan

1 Judul Sub Menu

Chart (Label) Judul sub menu aplikasi yang akan dirancang 2 Grafik 4 Way Merge

Sort (Chart)

Untuk membuat dan menampilkan grafik 4 Way Merge Sort

Gambar 3.12. Perancangan Menu Chart Algoritma 4 Way Merge Sort

Keterangan:

Tabel 3.14. Tabel Perancangan Chart Algoritma 4 Way Merge Sort

No Jenis Objek Keterangan

1 Judul Sub Menu

Chart (Label) Judul sub menu aplikasi yang akan dirancang 2 Grafik 4 Way Merge

Sort (Chart)

Untuk membuat dan menampilkan grafik 4 Way Merge Sort


(32)

Gambar 3.13. Perancangan Menu Chart Perbandingan

Keterangan:

Tabel 3.15. Tabel Perancangan Chart Perbandingan

No Jenis Objek Keterangan

1 Judul Sub Menu

Chart (Label) Judul sub menu aplikasi yang akan dirancang 2 Grafik Perbandingan

(Chart)

Untuk membuat dan menampilkan grafik

perbandingan antara cocktail shaker sort dengan 4 way merge sort


(33)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1. Implementasi Sistem

Implementasi merupakan tahapan akhir dari proses pembuatan perangkat lunak. Pada tahap implementasi sistem ini akan dibahas bagaimana penerapan dari analisis dan perancangan sistem yang telah dilakukan dan dipaparkan pada bab sebelumnya dan juga akan dibahas bagaimana jalannya aplikasi, serta perangkat yang dibutuhkan untuk menjalankan aplikasi yang telah dibuat. Sistem yang dibangun menggunakan bahasa pemrograman Microsoft Visual Basic 2010.

4.1.1. Menu utama

Menu utama digunakan untuk menampilkan menu-menu aplikasi yang telah dirancang dan merupakan halaman awal saat program dijalankan. Pada menu utama terdapat 3 bagian yaitu: File, Algoritma dan Chart. Tiap bagian dari menu utama memiliki bagian-bagiannya juga. File memiliki beberapa bagian yaitu: About us dan keluar. Algoritma terdiri dari: Cocktail Shaker Sort dan 4 Way Merge Sort. Chart juga mempunyai beberapa bagian yaitu: Cocktail Shaker Sort, 4 Way Merge Sort dan perbandingan. Tampilan menu utama dapat dilihat pada Gambar 4.1.


(34)

Gambar 4.1. Tampilan Menu Utama

4.1.2. Sorting dengan algoritma cocktail shaker sort

Sorting dengan algoritma cocktail shaker sort merupakan salah satu bagian dari menu utama yaitu algoritma. Pada halaman ini akan dilakukan proses pengurutan data acak menggunakan algoritma cocktail shaker sort dapat dilihat pada Gambar 4.2.


(35)

Pertama-tama user memasukkan jumlah angka yang ingin diurutkan kemudian saat user menekan button ”jalankan”. Dalam hal ini user menginputkan jumlah data sebanyak 10, 50, 100, 500, 1000, 5000, 10000, 50000 dan 100000. Maka sistem akan meng-genarate data setelah itu muncul data sebelum diurutkan, sesudah diurutkan dan waktu eksekusi ditunjukkan pada Gambar 4.3, Gambar 4.4, Gambar 4.5, Gambar 4.6, Gambar 4.7, Gambar 4.8, Gambar 4.9, Gambar 4.10 dan Gambar 4.11.


(36)

Gambar 4.4. Sorting Algoritma Cocktail Shaker Sort n = 50

Gambar 4.5. Sorting Algoritma Cocktail Shaker Sort n= 100


(37)

Gambar 4.7. Sorting Algoritma Cocktail Shaker Sort n=1000


(38)

Gambar 4.9. Sorting Algoritma Cocktail Shaker Sort n = 10000


(39)

Gambar 4.11. Sorting Algoritma Cocktail Shaker Sort n = 100000

Setelah melakukan proses pengurutan dengan jumlah data 10 sampai 100000 maka saat user menekan tombol “Chart Cocktail Shaker Sort” akan muncul grafik algoritma cocktail shaker sort seperti yang ditunjukkan pada Gambar 4.12.


(40)

4.1.3. Sorting dengan algoritma 4 way merge sort

Sorting dengan algoritma 4 way merge sort merupakan salah satu bagian dari menu utama yaitu algoritma. Pada halaman ini akan dilakukan proses pengurutan data acak menggunakan algoritma 4 way merge sort dapat dilihat pada Gambar 4.2.

Gambar 4.13. Tampilan Sorting dengan Algoritma 4 Way Merge Sort

Pertama-tama user memasukkan jumlah angka yang ingin diurutkan kemudian saat user menekan button ”jalankan”. Dalam hal ini user menginputkan jumlah data sebanyak 10, 50, 100, 500, 1000, 5000, 10000, 50000 dan 100000. Maka sistem akan meng-genarate data setelah itu muncul data sebelum diurutkan, sesudah diurutkan dan waktu eksekusi ditunjukkan pada Gambar 4.14, Gambar 4.15, Gambar 4.16, Gambar 4.17, Gambar 4.18, Gambar 4.19, Gambar 4.20, Gambar 4.21 dan Gambar 4.22.


(41)

Gambar 4.14. Sorting Algoritma 4 Way Merge Sort n = 10


(42)

Gambar 4.16. Sorting Algoritma 4 Way Merge Sort n = 100


(43)

Gambar 4.18. Sorting Algoritma 4 Way Merge Sort n = 1000


(44)

Gambar 4.20. Sorting Algoritma 4 Way Merge Sort n = 10000


(45)

Gambar 4.22. Sorting Algoritma 4 Way Merge Sort n = 100000

Setelah melakukan proses pengurutan dengan jumlah data 10 sampai 100000 maka saat user menekan tombol “Chart Cocktail Shaker Sort” akan muncul grafik algoritma cocktail shaker sort seperti yang ditunjukkan pada Gambar 4.23.


(46)

Grafik dari hasil perbandingan antara kedua algoritma tersebut dapat dilihat pada Gambar 4.24 terdapat perbedaan waktu yang cukup jelas di antara algoritma tersebut. Pengurutan data dengan algoritma 4 way mergesort lebih cepat jika dibandingkan dengan cocktail shaker sort. Hal ini dibuktikan dengan keadaan grafik waktu perbandingan antara kedua algoritma tersebut, dimana grafik waktu cocktail shaker sort perubahannya lebih besar jika dibandingkan dengan 4 way mergesort.

Gambar 4.24. Grafik Perbandingan 4.2. Pengujian Sistem

Dalam sistem ini terdapat dua proses utama, antara lain: proses pengurutan dan kompleksitas waktu berdasarkan algoritma cocktail shaker sort dan 4 way merge sort. 4.2.1. Analisis proses algoritma cocktail shaker sort

Langkah-langkah proses pengurutan data dengan algoritma cocktail shaker sort: 1. Data yang ingin diurutkan sebanyak n=10

8055 18720 70822 83447 76754 95968 36288 21469 94905 28852 2. Iterasi pertama mulai dari sebelah kiri dengan membandingkan 2 data awal yang

berwarna merah

8055 18720 70822 83447 76754 95968 36288 21469 94905 28852 8055 18720 70822 83447 76754 95968 36288 21469 94905 28852


(47)

3. Jika data pertama lebih besar dari yang kedua maka ditukar (swap) data tersebut. Data hasil proses swap adalah data yang berwarna biru.

8055 18720 70822 83447 76754 95968 36288 21469 94905 28852 8055 18720 83447 70822 76754 95968 36288 21469 94905 28852 8055 18720 83447 70822 76754 95968 36288 21469 94905 28852 8055 18720 83447 70822 76754 95968 36288 21469 94905 28852 8055 18720 83447 70822 76754 95968 36288 21469 94905 28852 8055 18720 83447 70822 76754 36288 95968 21469 94905 28852 8055 18720 83447 70822 76754 36288 95968 21469 94905 28852 8055 18720 83447 70822 76754 36288 21469 95968 94905 28852 8055 18720 83447 70822 76754 36288 21469 95968 94905 28852 8055 18720 83447 70822 76754 36288 21469 94905 95968 28852 4. Lakukan proses tersebut terus menerus sampai ditemukan nilai terbesar di sebelah

kanan. Kemudian data terbesar yang diperoleh diberi warna hijau sehingga data tersebut disimpan dan tidak ikut lagi dalam proses pengurutan data.

8055 18720 83447 70822 76754 36288 21469 94905 95968 28852

8055 18720 83447 70822 76754 36288 21469 94905 28852 95968

8055 18720 83447 70822 76754 36288 21469 94905 28852 95968 5. Iterasi kedua lakukan dari arah yang berlawanan dan lakukan proses swap.

8055 18720 83447 70822 76754 36288 21469 94905 28852 95968 8055 18720 83447 70822 76754 36288 21469 28852 94905 95968 8055 18720 83447 70822 76754 36288 21469 28852 94905 95968 8055 18720 83447 70822 76754 36288 21469 28852 94905 95968 8055 18720 83447 70822 76754 21469 36288 28852 94905 95968


(48)

8055 18720 83447 70822 76754 21469 36288 28852 94905 95968 8055 18720 83447 70822 21469 76754 36288 28852 94905 95968 8055 18720 83447 70822 21469 76754 36288 28852 94905 95968 8055 18720 83447 21469 70822 76754 36288 28852 94905 95968 8055 18720 83447 21469 70822 76754 36288 28852 94905 95968 6. Lakukan terus proses perbandingan sehingga diperoleh nilai data terkecil di

sebelah kiri. Data tersebut akan disimpan dan tidak ikut lagi dalam proses pengurutan data.

8055 18720 21469 83447 70822 76754 36288 28852 94905 95968 8055 18720 21469 83447 70822 76754 36288 28852 94905 95968 8055 18720 21469 83447 70822 76754 36288 28852 94905 95968 8055 18720 21469 83447 70822 76754 36288 28852 94905 95968 7. Ulangi kembali proses tersebut berulang-ulang sehingga diperoleh data dalam

keadaan terurut.

8055 18720 21469 83447 70822 76754 36288 28852 94905 95968 8055 18720 21469 83447 70822 76754 36288 28852 94905 95968 8055 18720 21469 83447 70822 76754 36288 28852 94905 95968 8055 18720 21469 70822 83447 76754 36288 28852 94905 95968 8055 18720 21469 70822 83447 76754 36288 28852 94905 95968 8055 18720 21469 70822 76754 83447 36288 28852 94905 95968 8055 18720 21469 70822 76754 83447 36288 28852 94905 95968 8055 18720 21469 70822 76754 36288 83447 28852 94905 95968


(49)

8055 18720 21469 70822 76754 36288 28852 83447 94905 95968 8055 18720 21469 70822 76754 36288 28852 83447 94905 95968 8055 18720 21469 70822 76754 36288 28852 83447 94905 95968 8055 18720 21469 70822 76754 36288 28852 83447 94905 95968 8055 18720 21469 70822 76754 36288 28852 83447 94905 95968 8055 18720 21469 70822 76754 28852 36288 83447 94905 95968 8055 18720 21469 70822 76754 28852 36288 83447 94905 95968 8055 18720 21469 70822 28852 76754 36288 83447 94905 95968 8055 18720 21469 70822 28852 76754 36288 83447 94905 95968 8055 18720 21469 28852 70822 76754 36288 83447 94905 95968 8055 18720 21469 28852 70822 76754 36288 83447 94905 95968 8055 18720 21469 28852 70822 76754 36288 83447 94905 95968 8055 18720 21469 28852 70822 76754 36288 83447 94905 95968 8055 18720 21469 28852 70822 76754 36288 83447 94905 95968 8055 18720 21469 28852 70822 76754 36288 83447 94905 95968 8055 18720 21469 28852 70822 76754 36288 83447 94905 95968 8055 18720 21469 28852 70822 76754 36288 83447 94905 95968 8055 18720 21469 28852 70822 36288 76754 83447 94905 95968 8055 18720 21469 28852 70822 36288 76754 83447 94905 95968 8055 18720 21469 28852 70822 36288 76754 83447 94905 95968 8055 18720 21469 28852 70822 36288 76754 83447 94905 95968 8055 18720 21469 28852 70822 36288 76754 83447 94905 95968


(50)

8055 18720 21469 28852 36288 70822 76754 83447 94905 95968 8055 18720 21469 28852 36288 70822 76754 83447 94905 95968 8055 18720 21469 28852 36288 70822 76754 83447 94905 95968 8055 18720 21469 28852 36288 70822 76754 83447 94905 95968 8055 18720 21469 28852 36288 70822 76754 83447 94905 95968 8055 18720 21469 28852 36288 70822 76754 83447 94905 95968 8055 18720 21469 28852 36288 70822 76754 83447 94905 95968 8055 18720 21469 28852 36288 70822 76754 83447 94905 95968 8055 18720 21469 28852 36288 70822 76754 83447 94905 95968 8055 18720 21469 28852 36288 70822 76754 83447 94905 95968 8055 18720 21469 28852 36288 70822 76754 83447 94905 95968

8. Data yang sudah terurut:


(51)

4.2.2. Analisis kompleksitas waktu algoritma cocktail shaker sort

No Code C # C.#

PublicFunction CocktailSortNumber(ByVal ListofNumber

As List(OfInteger)) As List(OfInteger)

1 Dim swaps AsBoolean = True C1 1 C1

2 While swaps = True C2 n C2n

3 swaps = False C3 n C3n

4 For i AsInteger = 0 To ListofNumber.Count - 2 C4 n(n-1)

C4(n2-n)

5 If ListofNumber(i) > ListofNumber(i + 1) Then C5 n(n-1)

C5(n2-n)

6 Dim temp AsInteger = ListofNumber(i) C1 n(n-1)

C1(n2-n)

7

ListofNumber(i) = ListofNumber(i +

1) C6 n(n-1)

C6(n2-n)

8 ListofNumber(i + 1) = temp C6 n(n-1)

C6(n2-n)

9 swaps = True C3 n(n-1)

C3(n2-n)

10 EndIf

11 Next

12 swaps = False C3 n C3n

13

For i AsInteger = ListofNumber.Count - 2 To 0 Step

-1 C4 n(n-1)

C4(n2-n)

14 If ListofNumber(i) > ListofNumber(i + 1) Then C5 n(n-1)

C5(n2-n)

15 Dim temp AsInteger = ListofNumber(i) C1 n(n-1)

C1(n2-n)


(52)

C6(n2-Cara untuk menganalisis kompleksitas waktu algoritma cocktail shaker sort adalah sebagai berikut:

4.2.3. Analisis proses algoritma 4 way merge sort

Cara untuk menganalisis kompleksitas waktu algoritma 4 way merge sort adalah sebagai berikut:

Langkah-langkah proses pengurutan data dengan algoritma 4 way merge sort: 1. Data yang ingin diurutkan sebanyak n=10

8055 18720 70822 83447 76754 95968 36288 21469 94905 28852 2. Bagi data tersebut menjadi 4

3. Data yang sudah dibagi 4. Pisahkan data tersebut satu per satu. Jika data kurang dari 4 maka data tidak perlu lagi dibagi menjadi 4 bagian.

+ 1) n)

17 ListofNumber(i + 1) = temp C6 n(n-1)

C6(n2-n)

18 swaps = True C3 n(n-1)

C3(n2-n)

19 EndIf

20 Next

21 EndWhile

22 Return ListofNumber C7 n(n-1)

C7(n2-n)

23 EndFunction

T(n)=C1+(C2+C3)n+(C4+C5+C1+2C6+C3)(n2-n)+C3n+(C4+C5+C1+2C6+C3+C7)(n2-n) T(n)=C1+(C2+2C3)n+(2C4+2C5+2C1+4C6+2C3+C7)(n2-n)


(53)

4. Kemudian gabungkan dan urutkan data tersebut sesuai dengan pengelompokannya.

5. Gabungkan dan urutkan kembali data tersebut maka diperolehlah keseluruhan data dalam keadaan terurut.


(54)

4.2.4. Analisis kompleksitas algoritma 4 way merge sort


(55)

Pada Gambar 4.25. menunjukkan n adalah banyak data yang akan diurutkan, hd adalah tingkatan berapa kali proses divide hc adalah tingkatan berapa kali proses conquer, H adalah gabungan dari proses divide dan conquer dan hd=hc. Oleh karena itu, maka diperoleh Tabel 4.1.

Tabel 4.1. Tabel Proses Algoritma 4 Way Merge Sort

n hd hd‟

10 3 2

4 2 1

1 1 0

Dari Tabel 4.1. diatas maka diperoleh: hd‟ = hd-1

n = 3hd‟+1

log n = hd‟ log 3 + log 1 hd‟ = 3 log n

hd‟ = hd – 1 3

log n = hd – 1 hd = 3 log n + 1

H = hd + hc– 1 = 3 log n + 1+1 – 1 = 3 log n + 1

T(n) = w. H

= n. 3 log n + 1 = n log n + n = θ( n log n)


(56)

4.3. Hasil Pengujian Sistem

Dalam proses pengujian proses pengurutan (sorting) untuk algoritma cocktail shaker sort menggunakan Intel® Core™ i5-2410M 2.3GHz with Turbo Boost up to 2.9 GHz RAM 4GB dengan jumlah data 10-100000 diperoleh hasil perbandingan dari proses pengurutan algoritma cocktail shaker sort dan 4 way merge sort sebagai berikut: 4.3.1. Hasil pengujian algoritma cocktail shaker sort

Hasil pengurutan data yang diperoleh menggunakan algoritma cocktail shaker sort dapat dilihat pada Tabel 4.2.

Tabel 4.2. Tabel Hasil Pengujian Algoritma Cocktail Shaker Sort No. Jumlah Data Waktu eksekusi (detik)

1 10 0.006

2 50 0.031

3 100 0.067

4 500 0.368

5 1000 0.695

6 5000 3.565

7 10000 10.658

8 50000 50.017


(57)

4.3.2. Hasil pengujian algoritma 4 way merge sort

Hasil pengurutan data yang diperoleh menggunakan algoritma 4 way merge sort dapat dilihat pada Tabel 4.3.

Tabel 4.3. Tabel Hasil Pengujian Algoritma 4 Way Merge Sort No. Jumlah Data Waktu eksekusi (detik)

1 10 0

2 50 0

3 100 0

4 500 0.017

5 1000 0.066

6 5000 1.372

7 10000 5.917

8 50000 45.564


(58)

BAB 5

KESIMPULAN DAN SARAN

5.1. Kesimpulan

Berdasarkan penelitian yang telah dilakukan, penulis dapat memberikan kesimpulan yaitu sebagai berikut :

1. Running time yang dibutuhkan untuk mengurutkan data bilangan bulat (integer) dengan jumlah data 10-100000 algoritma 4 way merge sort lebih efisien dibandingkan algoritma cocktail shaker sort.

2. Algoritma 4 way merge sort lebih efisien dibandingkan cocktail shaker sort karena algoritma 4 way merge sort memiliki kompleksitas θ(n log n) sedangkan cocktail shaker sort memiliki kompleksitas (n2).

5.2. Saran

Adapun saran-saran yang dapat diberikan penulis untuk pengembangan dan perbaikan sistem ini selanjutnya adalah sebagai berikut:

1. Diharapkan pada peneliti selanjutnya untuk memilih algoritma pengurutan yang baru sehingga para pembaca dapat menambah wawasan tentang jenis-jenis algoritma pengurutan.

2. Dalam perkembangannya diharapkan sistem dapat mengurutkan angka dan huruf sehingga data yang diteliti lebih bervariasi.


(59)

BAB 2

LANDASAN TEORI

2.1. Algoritma

Algoritma adalah prosedur komputasi yang didefinisikan dengan baik yang mengambil beberapa nilai yaitu seperangkat nilai sebagai input dan output yang menghasilkan nilai (Sedgewick & Wayne, 2011). Secara umum algoritma merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma.

Menurut Donald E. Knuth, algoritma yang baik memiliki kriteria sebagai berikut (Sitorus, 2015):

1. Input

Suatu algoritma harus memiliki 0 (nol) atau lebih masukan (input). Artinya, suatu algoritma itu dimungkinkan tidak memiliki masukan secara langsung dari pengguna tetapi dapat juga memiliki beberapa masukan. Algoritma yang tidak memiliki masukan secara langsung dari pengguna, maka semua data dapat diinisialisaikan atau dibangkitkan dalam algoritma.

2. Output

Suatu algoritma harus memiliki satu atau lebih algoritma. Suatu algoritma yang tidak memiliki keluaran (output) adalah suatu algoritma yang sia sia, yang tidak perlu dilakukan. Algoritma dibuat untuk tujuan menghasilkan sesuatu yang diinginkan, yaitu berupa hasil keluaran.


(60)

3. Finiteness

Setiap pekerjaan yang dikerjakan pasti berhenti. Demikian juga algoritma harus dapat dijamin akan berhenti setelah melakukan sejumlah langkah proses.

4. Definiteness

Algoritma tersebut tidak menimbulkan makna ganda (ambiguous). Setiap baris aksi/pernyataan dalam suatu algoritma harus pasti, artinya tidak menimbulkan penafsiran lain bagi setiap pembaca algoritma, sehingga memberikan output yang sesuai dengan yang diharapkan oleh pengguna.

5. Effectiveness

Setiap langkah algoritma harus sederhana sehingga dikerjakan dalam waktu yang wajar.

2.2. Pengurutan

Algoritma pengurutan adalah proses menyusun kembali rentetan objek-objek untuk meletakkan objekdari suatukumpulan data ke dalam urutan yang logis (Cormen, 2009).Pada dasarnya, pengurutan(sorting) membandingkanantar data atau elemen berdasarkan kriteria dankondisi tertentu (Indrayana & Ihsan, 2005).Pengurutan dapat dilakukan dari nilai terkecil ke nilai terbesar (ascending) atau sebaliknya (descending).

Ada dua kategori pengurutan (Suarga, 2012): 1. Pengurutan internal

Pengurutan internal adalah pengurutan yang dilaksanankan hanya dengan menggunakan memori komputer, pada umumnya digunakan bila jumlah elemen tidak terlalu banyak.

2. Pengurutan eksternal

Pengurutan eksternal adalah pengurutan yang dilaksanakan dengan bantuan memori virtual atau harddisk karena jumlah elemen yang akan diurutkan terlalu banyak.


(61)

2.3. Klasifikasi Algoritma Pengurutan

Klasifikasi algoritma-algoritma pengurutan dibedakan berdasarkan (Erzandi,2009): 1. Kompleksitas perbandingan antar elemen terkait dengan kasus terbaik, rata-rata dan

terburuk

2. Kompleksitas pertukaran elemen, terkait dengan cara yang digunakan elemen setelah dibandingkan

3. Penggunaan memori 4. Rekursif atau tidak rekursif

5. Proses pengurutannya(metode penggunaannya)

Klasifikasi algoritma pengurutan berdasarkan proses pengurutannya sebagai berikut (Putranto, 2007):

1. Exchange Sort

Dalam prosesnya, algoritma-algoritma pengurutan yang diklasifikasikan sebagai exchange sort melakukan pembandingan antar data, dan melakukan pertukaran apabila urutan yang didapat belum sesuai. Contohnya: bubble sort, cocktail sort, comb sort, gnome sort, quick sort.

2. Selection Sort

Prinsip utama algoritma dalam klasifikasi ini adalah mencari elemen yang tepat untuk diletakkan di posisi yang telah diketahui, dan meletakkannya di posisi tersebut setelah data tersebut ditemukan. Contohnya: selection sort, heap sort, smooth sort, strand sort.

3. Insertion Sort

Algoritma pengurutan yang diklasifikasikan ke dalam kategori ini mencari tempat yang tepat untuk suatu elemen data yang telah diketahui ke dalam subkumpulan data yang telah terurut, kemudian melakukan penyisipan (insertion) data di tempat yang tepat tersebut. Contohnya: insertion sort, shell sort, tree sort, library sort, patience sorting.

4. Merge Sort

Dalam algoritma ini kumpulan data dibagi menjadi subkumpulan-subkumpulan yang kemudian sub kumpulan tersebut diurutkan secara terpisah, dan kemudian digabungkan kembali dengan metode merging. Dalam kenyataannya algoritma ini melakukan metode pengurutan merge sort juga untuk mengurutkan subkumpulan


(62)

data tersebut, atau dengan kata lain, pengurutan dilakukan secara rekursif. Contohnya: Merge sort.

5. Non-Comparison Sort

Sesuai namanya dalam proses pengurutan data yang dilakukan algoritma ini tidak terdapatpembandingan antardata, data diurutkan sesuai dengan pigeon hole principle. Dalam kenyataanyaseringkali algoritma non-comparison sort yang digunakan tidak murni tanpa pembandingan, yangdilakukan dengan menggunakan algoritma-algoritma pengurutan cepat lainnya untuk mengurutkan subkumpulan-subkumpulan datanya. Contohnya: Radix sort, Bucket sort, Counting sort, Pigeonhole sort, Tally sort.

Berdasarkan klasifikasi algoritma pengurutanyang sudah dijelaskan maka yang akan dianalisis pada penelitian ini adalah algoritmacocktail shaker sort dan 4 ways mergesort.

2.4. AlgoritmaCocktail Shaker Sort

Algoritma cocktail shaker sort adalah variasi kecil dari bubble sort(Knuth, 1973). Pada cocktail shaker sort setiap iterasi dari algoritma terdiri dari dua arah sedangkan pada bubble sortsetiap iterasi dalam satu arah sehingga bubble sorthanya dapat memindahkan mundur satu langkah setiap iterasi.Oleh karena itu, algoritma cocktail shaker sort disebut jugabidirectional bubble sort(Black &Bockholt, 2009).

Langkah-langkah algoritma cocktailshaker sortsecara ascendingyaitu: 1. Iterasi dari algoritma ini terdiri dari dua arah.

2. Tahap pertama loopdimulai dari data sebelah kiri.

3. Kemudian dibandingkan antara data pertama dengan data kedua yang berada disebelah kanan data pertama. Jika pada nilai di sebelah kiri lebih besar dari nilai di sebelah kanan maka kedua data tersebut ditukar. Sebaliknya jika nilai data sebelah kiri lebih kecil dari data sebelah kanan maka tidak perlu dilakukan pertukaran. 4. Pada akhir iterasi pertama, nilai terbesar akan berada di akhir. Kemudian nilai

tersebut disimpan dan tidak masuk lagi ke dalam data yang ingin diurutkan.

5. Tahap kedua loop melalui kumpulan data dalam arah yang berlawanan yaitu sebelah kanan.


(63)

7. Lakukan pertukaran data jika data sebelah kanan lebih kecil dari data sebelah kiri. Sebaliknya jika data sebelah kanan lebih besar dari data sebelah kiri maka pertukaran data tidak dilakukan.

8. Lakukan kembali proses tersebut sampai bergerak kembali menuju awal data sehingga diperoleh data pertama yang terkecil. Kemudian nilai tersebut disimpan dan tidak masuk lagi ke dalam data yang ingin diurutkan.

9. Ulangi kembali proses tersebut berulang-ulang sehingga diperoleh data dalam keadaan terurut dengan benar.

Contoh proses pengurutan data menggunakan cocktail shaker sort dapat dilihat pada Gambar 2.1.

Data yang ingin diurutkan:

31 98 72 14 8 22

Iterasi pertama mulai dari membandingkan 2 data awal yang berwarna merah

31 98 72 14 8 22

31 98 72 14 8 22

Data yang berwarna biru adalah data yang sudah ditukar(swap)

31 72 98 14 8 22

31 72 98 14 8 22

31 72 14 98 8 22

31 72 14 8 98 22

31 72 14 8 98 22

31 72 14 8 22 98

Data yang berwarna hijau adalah data yang sudah benar letak posisinya sehingga disimpan dan tidak ikut lagi dalam proses pengurutan data. Data di sebelah kanan merupakan data terbesar.


(64)

Iterasi kedua dari arah yang berlawanan.

31 72 14 8 22 98

Lakukan terus proses perbandingan sehingga diperoleh nilai data terkecil di sebelah kiri.

31 72 14 8 22 98

31 72 8 14 22 98

31 72 8 14 22 98

31 8 72 14 22 98

31 8 72 14 22 98

Maka diperoleh data terkecil di sebeleh kiri yang berwarna hijau. Data tersebut akan disimpan dan tidak ikut lagi dalam proses pengurutan data. Ulangi kembali proses tersebut berulang-ulang sehingga diperoleh data dalam keadaan terurut dengan benar.

8 31 72 14 22 98

8 31 72 14 22 98

8 31 72 14 22 98

8 31 14 72 22 98

8 31 14 72 22 98

8 31 14 22 72 98

8 31 14 22 72 98

8 14 31 22 72 98

8 14 31 22 72 98


(65)

Gambar 2.1. Proses pengurutan data menggunakan cocktail shaker sort 2.5. Algoritma4 WayMerge Sort

Algoritmamerge sort merupakan algoritma yang dicetuskan oleh John von Neuman pada tahun 1945 (Knuth, 1998). Merge sortmenggunakan prinsip divide and conquer. Divide and conquer adalah metode pemecahanmasalah yang bekerja dengan membagi masalah (problem) menjadi beberapa sub-masalah (subproblem) yang lebih kecil, kemudian menyelesaikan masing-masing sub-masalah secara independen dan akhirnya menggabung solusi masing-masing sub-masalah sehingga menjadi solusi masalah semula (Munir, 2005).

Pada umumnya, merge sortmembagi data menjadi 2 bagian. Namun pada algoritma 4 way merge sort membagi datamenjadi 4 bagian sehingga diperoleh subdata yang terpisah. Kemudian subdata tersebut diurutkan secara terpisahlalu menggabungkannya hingga diperoleh data dalam keadaan terurut. Proses pengurutan menggunakan 4 way merge sortdapat dilihat pada Gambar 2.2.

Gambar 2.2. Proses pengurutan menggunakan algoritma 4 way merge sort 2.6. Pseudocode

Skema lain untuk menyusun algoritma adalah pseudocode. Pseudocode merupakan bentuk informal untuk mendeskripsikan algoritma yang mengikuti struktur bahasa pemrograman.Pseudocode adalah kode yang mirip dengan kode pemrograman sebenarnya(Utami & Raharjo, 2004).


(66)

Tujuan dari penggunaan pseudocode: 1. Lebih mudah dibaca oleh manusia 2. Lebih mudah dipahami

3. Lebih mudah dalam menuangkan ide/hasil pemikiran

2.6.1. Pseudocode cocktail shaker sort

Pseudocode algortima cocktail shaker sort sebagai berikut:

procedure cocktailShakerSort(A:list of sortable items); do

swapped := false

for each i in 0 to length( A ) - 2 do:

if A[ i ] > A[ i + 1 ] then // menguji apakah kedua elemen dalam urutan yang benar

swap( A[ i ], A[ i + 1 ] ) // jika urutannya salah maka tukar posisi

swapped := true end if

end for

if not swapped then

// keluar dari proses looping jika tidak terjadi

swap

break do-while loop end if

swapped := false

for each i in length( A ) - 2 to 0 do: if A[ i ] > A[ i + 1 ] then

swap( A[ i ], A[ i + 1 ] ) swapped := true

end if end for

while swapped // jika tidak ada lagi proses swap maka


(67)

2.6.2. Pseudocode 4 way merge sort

Pseudocode algortima4 way merge sort sebagai berikut:

MergeSort (Array(First,FirstOne,Last,LastOne)) Begin

if Array contains only one element then Return Array

Else

Middle=((Last+LastOne+First+FirstOne)/4) rounded down to nearest integer

LeftHalfArray=MergeSort(Array(First..Middle)) RightHalfArray=MergeSort(Array(Middle+1..Last)) ResultArray=Merge(LeftHalfArray,RightHalfArray) Return ResultArray Endif End MergeSort 2.7. Flowchart

Untuk menggambarkan sebuah algoritma yang terstruktur dan mudah dipahamioleh orang lain (khususnya programmer yang bertugas mengimplementasikan program), maka dibutuhkan alatbantu yang bebrbentuk diagram alir (flowchart). Flowchart menggambarkan urutan logika dari suatu prosedur pemecahan masalah, sehingga flowchart merupakan langkah-langkah penyelesaian masalah yang dituliskan dalam simbol-simbol tertentu.Tujuan flowchart adalah untuk menggambarkan suatu tahapan penyelesaian masalah secara sederhana, terurai, rapi dan jelas menggunakan simbol-simbol yang standar.

Simbol-simbol flowchartyang digunakan untuk menggambarkan algoritma dalam bentuk diagram alir dan kegunaan dari simbol-simbol yang bersangkutan dapat dilihat pada Tabel 2.1.

Tabel 2.1. Simbol-Simbol Flowchart

Simbol Nama Fungsi

Terminal Menyatakan permulaan atau akhir program..

Input/Output Menyatakan proses input/output tanpa tergantung jenis peralatannya


(68)

Process Menyatakan suatu tindakan (proses) yang dilakukan oleh komputer.

Decision Menunjukkan suatu kondisi tertentu yang akan menghasilkan dua kemungkinan jawaban yaitu: ya atau tidak.

Tabel 2.1. Simbol-Simbol Flowchart(Lanjutan)

Simbol Nama Fungsi

Connector Menyatakan sambungan dari proses ke proses lainnya dalam halaman yang sama.

Offline Connector Menyatakan sambungan dari proses ke proses lainnya dalam halaman yang berbeda

Prefined Data Menyatakan penyediaan tempat penyimpanan suatu pengolahan untuk memberi inisialisasi/harga awal

PredefinedProcess Menyatakan permulaan sub

program/proses menjalankan sub program

2.8. Running Time


(69)

saat algoritma berhenti.Jika prosesor-prosesornya tidak mulai dan selesai pada saat yang bersamaan, maka running time dihitung mulai saat komputasi pada prosesor pertama dimulai hingga pada saat komputasi pada prosesor terakhir selesai.

2.9. Kompleksitas Waktu

Kompleksitas Waktu atau T(n) adalah jumlah operasi yang dilakukan untuk melaksanakan algoritma sebagaifungsidari ukuran masukan n (Tjaru, 2009). Oleh karena itu, dalam mengukur kompleksitas waktu dihitunglah banyaknya operasi yangdilakukan oleh algoritma. Idealnya, harusmenghitung semua operasi yang ada dalam suatu algoritma. Namun untuk alasan praktis, cukup menghitungjumlah operasi abstrak yang mendasari suatu algoritma.

Hal–hal yang mempengaruhi kompleksitas waktu (Aulia, 2006): 1. Jumlah masukan data untuk suatu algoritma(n).

2. Waktu yang dibutuhkan untuk menjalankan algoritma tersebut.

3. Ruang memori yang dibutuhkan untuk menjalankan algoritma yang berkaitan dengan strutur data dari program.

Kompleksitas waktu dibedakan atas tiga jenis, yakni :

1. Tmax(n) : kompleksitas waktu untuk kasus terburuk (worst case), kebutuhan

waktumaksimum.

2. Tmin(n) : kompleksitas waktu untuk kasus terbaik (best case),kebutuhan

waktuminimum.

3. Tavg(n): kompleksitas waktu untuk kasus rata-rata (average case), kebutuhanwaktu

secara rata-rata.

2.10. Metode Pemodelan UML

UML (Unified Modeling Language) merupakan metode pemodelan secara visual sebagai sarana untuk merancang atau membuat software berorientasi objek. Karena UML sebuah bahasa visual untuk pemodelan bahasa berorientasi objek, maka semua elemen dan diagram berbasiskan pada paradigma object oriented sehingga UML merupakan sebuah bahasa standar untuk pengembangan sebuah software yang dapat menyampaikan bagaimana membuat danmembentuk model-model, tetapi tidak


(70)

menyampaikan apa dan kapanmodel yang seharusnya dibuat yang merupakan salah satu proses implementasi pengembangan software.

UML terdiri atas pengelompokan diagram-diagram sistem menurut aspek atau sudut pandang tertentu.Diagram yang menggambarkan permasalahan maupun solusi dari permasalahan suatu model. UML mempunyai beberapa jenis diagram yaitu:Use Case Diagram, Class Diagram, Package Diagram, Object Diagram, Sequence Diagram, Collaboration Diagram, StatiChart Diagram, Activity Diagram, Deployment Diagram, Component Diagram, Composite Structure Diagram, Interaction Overview Diagram, Timing Diagram.Tetapi yang sering digunakan adalah Use Case Diagram, Activity Diagram, Sequence Diagram dan Class Diagram.

2.10.1.Use case diagram

Use case diagramadalah model fungsional sebuah system yang menggunakan actor dan use case. Use case adalah layanan (service) atau fungsi-fungsi yang disediakan oleh sistem untuk penggunanya yang menjadi persoalan itu apa yang dilakukanbukan bagaimana melakukannya.

Use case diagrammenggambarkan fungsionalitas yang diharapkan dari sebuah sistem. Yang tekankan adalah “apa” yang dibuat sistem, dan bukan “bagaimana” sebuah use case menerangkan sebuah interaksi antar actor dengan system. Use case merupakan sebuah pekerjaan tertentu, misalnya:login ke sistem, meng-create sebuah daftar belanja, dan lain-lain. Seorang sebuah actor adalah sebuah entitas manusia atau mesin yang berinteraksi dengan sistem untuk melakukan pekerjaan-pekerjaan tertentu. Diagram use case dekat kaitannya dengan kejadian-kejadian. Kejadian (scenario) merupakan contoh apa yang terjadi ketika seseorang berinteraksi dengan sistem.Use case diagram mempunyai beberapa bagian penting seperti: Actor, Use Case, Underectional Association, Generalization. Use case diagram mempunyai pengkasifikasian yang ditunukkan pada Tabel 2.2.

Tabel 2.2. Pengklasifikasian dalam Use Case Diagram


(71)

Actor Menggambarkan semua objek di luar sistem (bukan hanya pengguna sistem/perangkat lunak) yang berinteraksi dengan sistem yang dikembangkan.

Use Case Menggambarkan fungsionalitas yang dimiliki system

Relasi menggambarkan hubungan antara actor dan use case.Pembagian relasi-relasi ini dapat dilihat pada Tabel 2.3.

Tabel 2.3. Tabel Relasi-Relasi dalam Use Case Diagram

Relasi Kegunaan Notasi

Asosiasi (Association)

Lintasan komunikasi antara actor dengan use case

Extend Penambahan perilaku ke suatu use case dasar

Generalisasi Use Case

Menggambarkan hubungan antara use case yang bersifat umum dengan use case-use case yang bersifat lebih spesifik

Include Penambahan perilaku ke suatu use case dasar yang secara eksplisit mendeskripsikan penambahan tersebut


(72)

Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana aktivitas berakhir.Activity diagram sesungguhnya merupakan bentuk khusus dari state machine yang bertujuan memodelkan komputasi-komputasi dan aliran-aliran kerja yang terjadi dalam sistem/perangkat lunak yang sedang dikembangkan. Activity diagrammencakup didalamnya simbol-simbol yang relative mudah digunakan. Simbol-simbol yang sama juga dapat digunakan pada statechart diagram.

Jenis-jenis state diperlihatkan pada Tabel 2.4.

Tabel 2.4. Jenis-Jenis State

Relasi Fungsi Notasi

State sederhana

State tanpa struktur apapun di dalamnya

State komposit

State yang dibagi menjadi 2 atau lebih substate konkuren.

Initial state State mendindikasikan awal rangkaian state dalam diagram state

Final state State mengindikasikan akhir rangkaian state dalam diagram state

2.10.3.Sequence diagram

Sequence diagram termasuk kedalam kategori diagram behavior, yaitu diagram yang berfungsi untuk menampilkan prilaku software. Sequence diagram menggambarkan bagaimana objek saling berinteraksi melalui message dalam eksekusi operation, untuk

State With Substance


(73)

diterima diantara objek, dan di urutan yang mana.Sequence diagram membantu untuk menggambarkan data yang masuk dan keluar sistem.


(74)

Notasi/simbol sequence diagram dapat dilihat pada Tabel 2.5

Tabel 2.5. Notasi/simbol Sequence Diagram

Actor  Seseorang atau sesuatu yang berinteraksi dengan sistem.

 Berpartisipasi secara berurutan dengan mengirimkan dan/atau menerima pesan.

 Ditempatkan dibagian atas diagram.

System Kotak yang menunjukan sebuah sistem sebagai „black box‟ atau secara keseluruhan.

Lifeline Garis putus vertikal dibawah aktor dan sistem, menunjukkan berjalannya sistem

Activation bar  Garis membentuk kotak panjang dibawah lifelines.

 Menunjukkan waktu ketika objek aktif di dalam interaksi.

Input message  Garis panah horizontal dari aktor ke sistem yang menunjukkan input.

 Penulisan diawali dengan huruf kapital.

 Jika mengandung parameter, ditulis dengan cara yang sama, dan setiap parameter diawali dengan koma.

Output message Garis panah putus-putus horizontal dari sistem ke aktor yang menunkukkan message yang dikirim dari sistem ke aktor.

Receiver actor Aktor lain diluar sistem yang menerima message dari sistem juga dapat diikutsertakan.

Frame  Sebuah kotak yang dapat menutup satu atau lebih message untuk membagi sequence.


(1)

PERBANDINGAN ALGORITMA COCKTAIL SHAKER SORT DAN 4 WAY MERGE SORT DALAM PENGURUTAN DATA

ABSTRAK

Pengurutan merupakan hal yang sangat penting dalam perkembangan Teknologi Informasi dan Komunikasi karena memberikan pengaruh yang besar dalam pengolahan data. Pemecahan permasalahan pengolahan data dapat menjadi lebih efektif dan efisien apabila data sudah dalam keadaan terurut. Oleh karena itu, algoritma pengurutan dibutuhkan untuk mengurutkan data dengan cepat dan tepat. Dalam suatu algoritma perlu diperhatikan efisiensinya karena semakin efisien suatu algoritma, maka saat dieksekusi dan dijalankan akan menghabiskan waktu yang lebih cepat. Efisiensi algoritma dinyatakan dengan kompleksitas algoritma. Maka dibangunlah sistem untuk menganalisis algoritma pengurutan dengan menggunakan

cocktail shaker sort dan 4 way merge sort. Berdasarkan sistem yang telah dibuat dengan memasukkan jumlah data yang dinginkan akan diperoleh waktu eksekusi, grafik dan kompleksitas algoritma pengurutan data tersebut sehingga dapat diketahui algoritma mana yang lebih efektif untuk digunakan.

Kata Kunci : Algoritma Pengurutan, Kompleksitas Algoritma, Cocktail Shaker Sort,

4 Way Merge Sort


(2)

COMPARISON OF COCKTAIL SHAKER SORT AND 4 WAY MERGE SORT ALGORITHMS IN DATA SORTING

ABSTRACT

Sorting is very important in the development of Information and Communication Technology for a big impact in data processing. Solving the problems of data processing can be more effective and efficient when data is already in a state of sequences. Therefore, the algorithm is needed to sort data quickly and accurately. An algorithm is needed to consider the efficiency because the more efficient an algorithm, the quickly it generates result. Algorithm efficiency is expressed by the complexity of the algorithm. Thus, system is built for analyzing sorting algorithms by using cocktail shaker sort and 4 way merge sort. Based of the system that has been created by entering the desired amount of data will be obtained by the time of execution, graphics and complexity algorithms of data sorting so it can know which was more effective algorithm to be used.

Keywords: Sorting Algorithms, Complexity Algorithm, Cocktail Shaker Sort, 4 Way Merge Sort


(3)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel x

Daftar Gambar xi

BAB 1 PENDAHULUAN 1

1.1. Latar Belakang 1

1.2. Rumusa n Masalah 2

1.3. Batasan Masalah 2

1.4. Tujuan Penelitian 2

1.5. Manfaat Penelitian 3

1.6. Metodol ogi Penelitian 3

1.7. Sistema tika Penulisan 4

BAB 2 LANDASAN TEORI 5

2.1. Algoritma 5

2.2. Pengurutan 6

2.3. Klasifikasi Algoritma Pengurutan 7

2.4. Algoritma Cocktail Shaker Sort 8

2.5. Algoritma 4 Way Merge Sort 11

2.6. Pseudocode 12 2.6.1. Pseudocode cocktail shaker sort 12 2.6.2. Pseudocode 4 way merge sort 13

2.7. Flowchart 14 2.8. Running Time 15

2.9. Kompleksitas Waktu 15

2.10. Metode Pemodelan UML 16

2.10.1. Use case diagram 17 2.10.2. Activity diagram 18 2.10.3. Sequence diagram 19 BAB 3 ANALISIS DAN PERANCANGAN SISTEM 21

3.1. Analisis Sistem 21


(4)

3.1.1. Analisis masalah 21

3.1.2. Analisis kebutuhan 22

3.1.2.1. Kebutuhan fungsional 22

3.1.2.2. Kebutuhan non-fungsional 23

3.2. Pemodelan Sistem 23

3.2.1. Use case diagram 24

3.2.2. Activity diagram 25

3.2.3. Sequence diagram 26

3.3. Perancangan Sistem 26

3.3.1. Flowchart sistem 27

3.3.2. Flowchart algoritma cocktail shaker sort 28 3.3.2. Flowchart algoritma 4 way merge sort 29

3.4. Perancangan Struktur Tabel 29

3.5. Perancangan Antarmuka 31

3.5.1. Menu utama 31

3.5.2. Menu file 32

3.5.3. Menu algoritma 33

3.5.4 Menu chart 35

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM 38

4.1. Implementasi Sistem 38

4.1.1. Menu utama 38

4.1.2. Sorting dengan algoritma cocktail shaker sort 39 4.1.3. Sorting dengan algoritma 4 way merge sort 45

4.2. Pengujian Sistem 51

4.2.1. Analisis proses algoritma cocktail shaker sort 51 4.2.2. Analisis kompleksitas waktu cocktail shaker sort 56 4.2.3. Analisis proses algoritma 4 way merge sort 57 4.2.4. Analisis kompleksitas waktu 4 way merge sort 58

4.3. Hasil Pengujian Sistem 60

4.3.1. Hasil pengujian algoritma cocktail shaker sort 60 4.3.2. Hasil pengujian algoritma 4 way merge sort 61

BAB 5 KESIMPULAN DAN SARAN 62

5.1. Kesimpulan 62


(5)

DAFTAR TABEL

Halaman

Tabel 2.1. Simbol-Simbol Flowchart 14

Tabel 2.2. Pengklasifikasian dalam Use Case Diagram 17

Tabel 2.3. Tabel Relasi-relasi dalam Use Case Diagram 18

Tabel 2.4. Jenis-Jenis State 19

Tabel 2.5. Notasi/simbol Sequence Diagram 20

Tabel 3.1. Struktur Tabel Angka 29

Tabel 3.2. Struktur Tabel Cocktail 30

Tabel 3.3. Struktur Tabel waktu_cocktail 30

Tabel 3.4. Struktur Tabel way1 30

Tabel 3.5. Struktur Tabel way2 30

Tabel 3.6. Struktur Tabel way3 30

Tabel 3.7. Struktur Tabel way4 31

Tabel 3.8. Struktur Tabel way_akhir 31

Tabel 3.9. Struktur Tabel waktu_4merge 31

Tabel 3.10. Keterangan Rancangan Menu Utama 32

Tabel 3.11. Tabel Perancangan Algoritma Cocktail Shaker Sort 33 Tabel 3.12. Tabel Perancangan Algoritma 4 Way Merge Sort 34 Tabel 3.13. Tabel Perancangan Chart Algoritma Cocktail Shaker Sort 36 Tabel 3.14. Tabel Perancangan Chart Algoritma 4 Way Merge Sort 36 Tabel 3.15. Tabel Perancangan Chart Perbandingan 37

Tabel 4.1. Tabel Proses Algoritma 4 Way Merge Sort 59

Tabel 4.2. Tabel Hasil Pengujian Algoritma Cocktail Shaker Sort 60 Tabel 4.3. Tabel Hasil Pengujian Algoritma 4 Way Merge Sort 61


(6)

DAFTAR GAMBAR

Halaman Gambar 2.1. Proses pengurutan data menggunakan cocktail shaker sort 11 Gambar 2.2. Proses pengurutan menggunakan algoritma 4 way merge sort 12

Gambar 3.1. Diagram Ishikawa 22

Gambar 3.2. Use CaseDiagram 24

Gambar 3.3. ActivityDiagram 25

Gambar 3.4. Sequence Diagram 26

Gambar 3.5. Flowchart Sistem 27

Gambar 3.6. Flowchart Algoritma Cocktail Shaker Sort 28

Gambar 3.7. Flowchart Algoritma 4 Way Merge Sort 29

Gambar 3.8. Perancangan Menu Utama 32

Gambar 3.9. Perancangan Menu Algoritma Cocktail Shaker Sort 33 Gambar 3.10. Perancangan Menu Algoritma 4 Way Merge Sort 34 Gambar 3.11. Perancangan Menu Chart Algoritma Cocktail Shaker Sort 35 Gambar 3.12. Perancangan Menu Chart Algoritma 4 Way Merge Sort 36

Gambar 3.13. Perancangan Menu Chart Perbandingan 37

Gambar 4.1. Tampilan Menu Utama 39

Gambar 4.2. Tampilan Sorting dengan Algoritma Cocktail Shaker Sort 39 Gambar 4.3. Sorting Algoritma Cocktail Shaker Sort n =10 40 Gambar 4.4. Sorting Algoritma Cocktail Shaker Sort n =50 40 Gambar 4.5. Sorting Algoritma Cocktail Shaker Sort n=100 41 Gambar 4.6. Sorting Algoritma Cocktail Shaker Sort n=500 41 Gambar 4.7. Sorting Algoritma Cocktail Shaker Sort n=1000 42 Gambar 4.8. Sorting Algoritma Cocktail Shaker Sort n =5000 42 Gambar 4.9. Sorting Algoritma Cocktail Shaker Sort n =10000 43 Gambar 4.10. Sorting Algoritma Cocktail Shaker Sort n = 50000 43 Gambar 4.11. Sorting Algoritma Cocktail Shaker Sort n = 100000 44 Gambar 4.12. Grafik Algoritma Cocktail Shaker Sort 44 Gambar 4.13. Tampilan Sorting dengan Algoritma 4 Way Merge Sort 45 Gambar 4.14. Sorting Algoritma 4 Way Merge Sort n =10 46 Gambar 4.15. Sorting Algoritma 4 Way Merge Sort n =50 46 Gambar 4.16. Sorting Algoritma 4 Way Merge Sort n =100 47 Gambar 4.17. Sorting Algoritma 4 Way Merge Sort n =500 47 Gambar 4.18. Sorting Algoritma 4 Way Merge Sort n =1000 48 Gambar 4.19. Sorting Algoritma 4 Way Merge Sort n =5000 48 Gambar 4.20. Sorting Algoritma 4 Way Merge Sort n =10000 49 Gambar 4.21. Sorting Algoritma 4 Way Merge Sort n =50000 49 Gambar 4.22. Sorting Algoritma 4 Way Merge Sort n =100000 50

Gambar 4.23. GrafikAlgoritma 4 Way Merge Sort 50

Gambar 4.24. GrafikPerbandingan 51