• Tidak ada hasil yang ditemukan

ALGORITMA DAN STRUKTUR DATA 1

N/A
N/A
Protected

Academic year: 2022

Membagikan "ALGORITMA DAN STRUKTUR DATA 1"

Copied!
13
0
0

Teks penuh

(1)

MODUL MATA KULIAH

ALGORITMA DAN STRUKTUR DATA 1

KP002 – 3 SKS

FAKULTAS TEKNOLOGI INFORMASI

UNIVERSITAS BUDI LUHUR

JAKARTA

SEPTEMBER 2019

TIM PENYUSUN

Painem, S.Kom, M.Kom

Reva Ragam, S.Kom., M.Kom

Ir. Moch. Sjukani

(2)

UNIVERSITAS BUDI LUHUR

FAKULTAS TEKNOLOGI INFORMASI

MODUL PERKULIAHAN #10 MERGE SORT

Capaian Pembelajaran : Mahasiswa mampu memahami karakteristik algoritma merge sort dan mengimplementasi algoritma merge ke dalam bahasa

pmrograman

Sub Pokok Bahasan : 1.1. Pengertian Merge Sort

1.2. Merge sort dengan jumlah elemen array ganjil

1.3. Merge Sort dengan jumlah elemen array genap

Daftar Pustaka : 1. Sjukani M, “Struktur data dengan C++(Algoritma dan Struktur Data 2 dengan C, C++)”, Mitra Wacana Media, 2007

2. Kristanto Andri, “Algoritma dan

Pemrograman dengan C++”, Graha Ilmu, 2003

3. Darmawan Erico, “Pemrograman Dasar C-

Java-C#”,Informatika,2012

(3)

2019/2020 1 Algoritma dan Struktur Data 1 (KP002)

MERGE SORT

1.1. KONSEP MERGE SORT

Merge Sort adalah algoritma yang berdasarkan strategi divide-and-conquer.

Strateginya adalah dengan membagi sekelompok data yang akan diurutkan menjadi beberapa kelompok kecil terdiri dari maksimal dua nilai untuk dibandingkan dan digabungkan lagi secara keseluruhan.

1) Divide

Memilah elemen-elemen dari rangkaian data menjadi dua bagian dan mengulangi pemilahan hingga satu elemen terdiri maksimal dua nilai

2) Conquer

Mengurutkan masing-masing elemen 3) Combine.

Menggabungkan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan. Proses rekursi berhenti jika mencapai elemen dasar.

Hal ini terjadi bilamana bagian yang akan diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen tersebut menandakan bahwa bagian tersebut telah trurut sesuai rangkaian.

Algoritma pengurutan data merge sort dilakukan dengan menggunakan cara divide and conquer yaitu dengan memecah kemudian menyelesaikan setiap bagian kemudian menggabungkannya kembali. Pertama data dipecah menjadi 2 bagian dimana bagian pertama merupakan setengah (jika data ge nap) atau setengah minus satu (jika data ganjil) dari seluruh data, kemudian dilakukan pemecahan kembali untuk masing - masing blok sampai hanya terdiri dari satu data tiap blok. Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama apakah data pertama lebih besar daripada data ke - tengah+1, jika ya maka data ke - tengah+1 dipindah sebagai data pertama, kemudian data ke - pertama sampai ke - tengah digeser menjadi data ke - dua sampai ke - tengah+1, demikian seterusnya sampai menjadi satu blok utuh seperti awalnya. Sehingga metode merge sort merupakan metode yang membutuhkan fungsi rekursi untuk penyelesaiannya.

(4)

Analisis dan Desain Algoritma (PG167) 2 2019/2020

1.2. MERGE SORT DENGAN JUMLAH ELEMEN ARRAY GENAP Langkah-langkah pengurutan dengan merge sort :

Misalkan sudah ada array satu dimensi dengan jumlah elemen array 8 dengan ilustrasi sebagai berikut :

A

0 1 2 3 4 5 6 7 30 16 19 2 12 5 14 10

Buat program untuk mengurutkan (sorting) dengan metode Merge Sort sehingga isi array menjadi sebagai berikut :

0 1 2 3 4 5 6 7 2 5 10 12 14 16 19 30

Ilustrasi merge sort :

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

16 30 2 19 12 15 10 14

2 16 19 30 10 12 14 15

2 10 12 14 15 16 19 30

Proses Devide

Proses Conquer Dan Combine

(5)

2019/2020 3 Algoritma dan Struktur Data 1 (KP002)

Langkah-langkah merge sort :

a) Jumlah elemen array dibagi menjadi dua( mid=(n/2)) , (sebelah kiri elemen array yang isinya 30,16,19,2) dan sebelah kanan (12,5,14,10). Ilustrasi sebagai berikut :

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

b) Langkah berikutnya elemen array kiri dibagi 2, dan elemen array kanan dibagi dua. Ilustrasi sebagai berikut :

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

(6)

Analisis dan Desain Algoritma (PG167) 4 2019/2020

c) Sama dengan langkah yang ke B, masing –masing dibagi dua. Ilustrasi sebagai berikut :

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

d) Untuk setiap elemen akan dilakukan perbandingan. Jika isi elemen array sebelah kanan lebih kecil dari isi array sebelah kiri maka dilakukan nilainya ditukar

Contoh :

Karena 16 lebih kecil dari 30 maka kedua bilangan tersebut ditukar kemudian digabungkan sehingga mendapatkan hasil= 16,30. Lakukan hal yang sama untuk bagian yang lain. Ilustrasi sebagai berikut :

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

16 30 2 19 12 15 10 14

(7)

2019/2020 5 Algoritma dan Struktur Data 1 (KP002)

e) Langkah selanjutkan adalah melakukan pengurutan dan penggabungan array seperti tahap d).

Contoh :

2 dibandingkan dengan 16, karena 2 lebih kecil maka masukkan angka 2 ke array , kemudian 16 dibandingkan dengan 19, karena 16 lebih kecil maka 16 yang dimasukkan kedalam array, berikutnya 30 dbandingkan dengan 19, karena 19 lebih kecil makan 19 dimasukkan kedalam array, baru kemudian 30

Ilustrasi sebagai berikut :

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

30 16 19 2 12 15 14 10

16 30 2 19 12 15 10 14

2 16 19 30 10 12 14 15

2 10 12 14 15 16 19 30

(8)

Analisis dan Desain Algoritma (PG167) 6 2019/2020

Program merge sort dengan jumlah elemen array genap :

(9)

2019/2020 7 Algoritma dan Struktur Data 1 (KP002)

Output

(10)

Analisis dan Desain Algoritma (PG167) 8 2019/2020

1.3. MERGE SORT DENGAN JUMLAH ELEMEN ARRAY GENAP

(11)

2019/2020 9 Algoritma dan Struktur Data 1 (KP002)

Sebagaimana yang dapat dipahami dari gambar di atas, pada setiap langkah, list dengan ukuran M dibagi menjadi 2 sublist berukuran M/2, hingga pembagian tidak dapat lagi dilakukan. Lebih mudahnya, diketahui terdapat array A yang lebih kecil dengan elemen (9,7,8)

Pada langkah pertama, list berukuran 3 dibagi menjadi 2 sublist dengan sublist pertama terdiri dari (9,7) dan sublist kedua terdiri dari (8). Sekarang, list pertama yang terdiri dari elemen (9,7) dibagi lagi menjadi 2 sublist terdiri dari elemen (9) dan (7) secara berurutan.

Sublist tersebut tidak dapat dibagi lagi karena setiap sublist hanya memiliki 1 elemen, kini kita akan mulai menggabungkan list tersebut. 2 sublist yang terbentuk pada langkah terakhir akan digabungkan sesuai urutan menggunakan prosedur yang disebutkan di atas dan membentuk list baru (7,9).

Dengan melakukan backtracking, kita akan menggabungkan list yang berisi elemen (8)dengan list ini, sehingga list baru yang tersortir terbentuk (7,8,9).

SOAL LATIHAN

Soal -1

Sudah ada array satu dimensi dengan jumlah elemen array int A[9] sudah ada isinya dengan ilustrasi sebagai berikut :

A

0 1 2 3 4 5 6 7 8 30 16 19 2 12 5 14 10 20

Buat program untuk mengurutkan (sorting) dengan metode Merge Sort sehingga isi array menjadi sebagai berikut : (Sertakan tahapan merge sort)

0 1 2 3 4 5 6 7 8 2 5 10 12 14 16 19 20 30

(12)

Analisis dan Desain Algoritma (PG167) 10 2019/2020

KESIMPULAN

Merge Sort adalah algoritma yang berdasarkan strategi divide-and-conquer.

Strateginya adalah dengan membagi sekelompok data yang akan diurutkan menjadi beberapa kelompok kecil terdiri dari maksimal dua nilai untuk dibandingkan dan digabungkan lagi secara keseluruhan.

a) Divide

Memilah elemen-elemen dari rangkaian data menjadi dua bagian dan mengulangi pemilahan hingga satu elemen terdiri maksimal dua nilai

b) Conquer

Mengurutkan masing-masing elemen c) Combine.

Menggabungkan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan.

(13)

FAKULTAS TEKNOLOGI INFORMASI UNIVERSITAS BUDI LUHUR

Jl. Raya Ciledug, Petukangan Utara, Pesanggrahan Jakarta Selatan, 12260

Telp: 021-5853753 Fax : 021-5853752

http://fti.budiluhur.ac.id

Gambar

Ilustrasi merge sort :
Ilustrasi sebagai berikut :

Referensi

Dokumen terkait

- List dengan elemen fiktif (dummy element) pada elemen pertama. - List dengan elemen fiktif (dummy element) pada

Karena antrian merupakan suatu kumpulan data, maka tipe data yang sesuai untuk menyajikan antrian adalah menggunakan array atau list (senarai berantai).. Contoh antrian dengan

Kembangkan program antrian dengan menggunakan ADT Cicular Single Linked List yang telah dibuat pada praktikum 7. Perhatikan bahwa sifat antrian adalah FIFO : First

Algoritma dan Struktur Data 6 Elemen dari struktur dapat diakses dengan menggunakan

terlebih dahulu setiap kali ada penambahan elemen stack, asalkan stack masih belum penuh, kemudian isikan nilai baru ke stack berdasarkan indeks top of stack setelah

Setiap elemen pada larik dimasukkan ke dalam struktur data binary search tree yang simpulnya berisi nilai kunci komparasi / kategori serta linked list

Merupakan perintah untuk menampilkan teks sesuai yang kita inginkan dengan nilai lebar tampilan data tertentupada object struk di file yang sudah kita buat sebelumnya.. Analisis

Definisi array diatas berarti kita mendeklarasikan sebuah variabel dengan tipe array yang mempunyai nama variabel nilai, yang memiliki elemen sejumlah 10 buah