Perbandingan Algoritma Cocktail Shaker Sort dan 4 Way Merge Sort Dalam Pengurutan Data
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