You are on page 1of 19

MAKALAH STRUKTUR DATA SEARCHING DAN SORTING ARRAY DENGAN MENGGUNAKAN METODE SHELL SORT, QUICK SORT, DAN

MERGE SORT

Disusun oleh :

Nama NIM Kelas

: Rahmat Iqbal Putra : 2011.01.0023 : Sistem Informasi . A

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER STMIK BINA NUSANTARA JAYA LUBUKLINGGAU TAHUN AKADEMIK 2012/2013
i

KATA PENGANTAR Assalammualaikum warahmatulahi wabarakatuh. Puji syukur penulis ucapkan atas kehadirat Allah SWT, karena atas berkat limpahan rahmat serta karunia-Nyalah penulis dapat menyelesaikan makalah ini. Makalah ini sengaja penulis buat untuk menyelesaikan tugas dari mata kuliah struktur data, dimana selain itu juga untuk menambah pengetahuan penulis dan para pembaca dalam hal pencarian elemen-elemen dengan menggunakan metode-metode seperti Shell sort, Quick sort, Merge sort, Insertion sort, exchange sort, bubble sort, tree sort, dan selection sort. Tapi, khusus pada makalah ini penulis hanya akan menjelaskan beberapanya saja dari metode yang ada, diantaranya yakni shell sort, quick sort, dan merge sort. Teori-teori yang akan penulis kemuka-Kan ini masih serba mungkin bisa untuk dikembangkan lagi nantinya, hingga para pembaca tak harus terpaku terhadap apa yang penulis tuliskan didalam makalah ini, didalam makalah ini penulis hanya memberikan penjelasan umum dalam hal pendeklarasiannya saja. Didalam menyelesaikan makalah yang sederhana ini penulis juga mendapatkan banyak rintangan di setiap bagiannya.Hingga penulis masih menyadari banyak kekurangan dari isi makalah ini. Namun berkat motivasi dari keluarga serta temanteman yang baik penulis akhirnya mampu menyelesaikannya. Dan oleh karena itu kritik saran dari pembaca yang membangun sangat penulis butuhkan demi menciptakan karya-karya ilmiah lainnya yang lebih baik lagi. Akhir kata penulis ucapkan terima kasih kepada semua pihak dan kepada Allah SWT penulis mohon ampun. Wassalammualaikum warrahmatulaahi wabarakaatuh.

Lubuklinggau, 30 September 2012 Penulis

Rahmat Iqbal Putra

ii

DAFTAR ISI

Halaman judul ........................................................................................................ i Kata pengantar ....................................................................................................... ii Daftar isi ................................................................................................................. iii Bab I Pendahuluan ................................................................................................. 1 A. Latar belakang .......................................................................................... 1 B. Masalah .................................................................................................... 1 C. Tujuan ....................................................................................................... 1 Bab II Pembahasan ................................................................................................ 2 A. Pengertian shell sort, quick sort, dan merge sort ...................................... 2 - 5 B. Algoritma shell sort, quick sort, dan merge sort ....................................... 5 - 8 C. Program shell sort, quick sort, dan merge sort ......................................... 8 - 14 Bab III Penutup ...................................................................................................... 15 A. Kesimpulan .............................................................................................. 15 B. Saran ........................................................................................................ 15 DAFTAR PUSTAKA ............................................................................................... 16

iii

BAB I PENDAHULUAN A. Latar belakang. Proses pencarian (searching) adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe sama (baik bertipe dasar atau bertipe bentukan). Proses pencarian yang lama dan rumit inilah yang membangun terbentuknya metode-metode berikut. Sorting bisa didefinisikan sebagai suatu proses pengurutan data yang sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu. Secara singkat, kita akan melakukan proses yang serupa dengan pencarian berurutan. Kita mulai dengan pembandingan dengan elemen yang pertama. Jika kita menganggap larik terurut naik (ascending), maka pencarian akan diteruskan sepanjang data yang dicari masih lebih kecil dari nilai elemen pada larik. Jika elemen larik sudah lebih besar, maka pencarian dihentikan karena pasti data yang dicari tidak akan pernah ditemukan pada larik. B. Masalah. Didalam algoritma banyak sekali berbagai macam tipe data yang sama ataupun berbeda jenis bahkan dalam hal pengurutannyapun seringkali terjadi kesalahan, maka dari itu dibuatlah suatu metode pengurutan data berdasarkan perbandingan, penyisipan, pembagian, dan prioritasnya masing-masing hingga data tersusun rapid an benar serta efisien dalam hal pemanfaatan waktu. C. Tujuan. Adapun tujuan dari pembuatan makalah ini yakni : 1. Menyelesaikan tugas dari mata kuliah Struktur Data. 2. Dengan mengetahui berbagai macam metode sorting kita bisa memilih tekhnik sorting mana yang sesuai serta dapat menggunakan tekhnik searching dalam mencari elemen pada suatu data. 3. Dapat mengenal jenis-jenis metode sorting dan searching. 4. Mampu menerapkan metode-metode berikut didalam suatu program sederhana. 5. Menunjukan beberapa algoritma dalam pengurutan. 6. Menunjukan bahwa pengurutan merupakan suatu hal yang bbisa diselesaikan dengan sejumlah algoritma yang berbeda.

BAB II PEMBAHASAN A. Pengertian Shell sort, quick sort, dan merge sort. Menurut Microsoft Book-shelf, definisi algortima pengurutan adalah algoritma untuk meletakan kumpulan elemen data ke dalam urutan tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen. Ada dua macam urutan yang biasa digunakan dalam proses pengurutan yaitu : Urut naik (ascending) yaitu dari data yang digunakan mempunyai nilai paling kecil sampai paling besar. Urut turun (descending) yaitu data yang mempunyai nilai paling besar sampai paling kecil.

Beberapa factor yang berpengaruh pada efektifitas suatu algoritma pengurutan antara lain : 1. Banyak data yang diurutkan. 2. Kapasitas pengingat apakah mampu menyimpan semua data yang kita miliki. 3. Tempat penyimpanan data, misalnya piringan, pita atau kartu, atau media penyimpanan lainnya. Pemilihan algoritma sangat ditentukan oleh struktur data yang digunakan. Metode pengurutan yang digunakan dapat diklasifikasikan menjadi dua kategori yaitu : Pengurutan internal, yaitu pengurutan dengan menggunakan larik (array). Larik tersimpan dalam memori utama computer. Pengurutan eksternal , yaitu pengurutan dengan menggunakan berkas (sequential acces file). Berkas tersimpan dalam pengingat luar, misalnya cakram atau pita magnetis. Metode pengurutan data : Pengurutan berdasarkan penyisipan dan penjagaan terurut (insert and keep sorted method). Contohnya : insetion sort dan tree sort. Pengurutan berdasarkan pembagian dan penguasaan (devide and conquer method). Contohnya: quick sort, merge sort.

Pengurutan berkurang menurun (diminishing increment sort method). Contohnya : shell sort.

1. Shell sort. Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959. Dalam metode ini jarak antara dua elemen yang dibandingkan dan hanya akan melakukan penukaran bila diperlukan. Metode ini juga disebut dengan metode pertambahan menurun (diminishing increment). Berikut penulis berikan contoh gambaran proses pengurutannya: Pertama-tama adalah kita tentukan jarak mula-mula dari data yang akan dibandingkan, yaitu N(2). Data pertama dibandingkan dengan data jarak N(2). Apabila data pertama lebih besar dari data ke N(2) tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan jarak yang sama yaitu N(2). Demikian seterusnya sampai seluruh data dibandingkan sehingga semua data ke-J selalu lebih kecil daripada data ke-{j + N(2)}. Pada proses berikutnya, digunakan jarak N(2) / 2 atau N(4). Data pertama dibandingkan dengan data dengan jarak N(4). Apabila data pertama lebih besar dari data ke N(4) tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan jarak yang sama yaitu N(4). Demikian seterusnya sampai seluruh data dibandingkan sehingga semua data ke-J lebih kecil daripada data ke-(J + N(4). Pada proses berikutnya, digunakan jarak N(4) / 2 atau (8). Demikian seterusnya sampai jarak yang digunakan adalah 1. 2. Quick sort. Metode Quick sering disebut juga metode partisi (partition exchange sort) dimana metode ini pertama kali diperkenalkan oleh C.A.R Hoare pada tahun 1962. Untuk mempertinggi efektifitas dari metode ini, digunakan tekhnik menukarkan dua elem dengan jarak yang cukup besar. Misalnya kita ingin mengurutkan data A yang mempunyai N elemen. Kita pilih sembarang elemen dari data tersebut, misalnya elemen pertama X. kemudian semua elemen tersebut disusun dengan menempatkan X pada posisi J sedemikian rupa sehingga elemen ke 1 sampai ke J-1 mempunyai nilai lebih kecil dari X dan elemen J+1 sampai ke N mempunyai nilai lebih besar dari X. sampai saat ini kita sudah mempunyai dua sub data (kiri dan kanan). Langkah berikutnya diulang untuk setiap sub data. Contoh dari proses sorting dengan menggunakan metode quick sort

Proses sorting :
22 10 15 3 8 2

10

15

22

10

15

22

10

15

22

10

15

22

Gambar diatas merupakan contoh sorting dengan quick sort Dari gambar diatas menunjukan pembagian data menjadi sub-sub bagian. Pivot dipilih dari data pertama tiap bagian maupun sub bagian, tetapi sebenarnya kita bisa memilih sembarang data sebagai pivotnya. Dari metode diatas juga bisa kita lihat bahwa metode quick sort ini bisa kita implementasikan menggunakan dua cara, yaitu dengan cara rekursif dan non rekursif. 3. Merge sort. Metode penggabungan biasanya digunakan pada pengurutan berkas. Metode ini menerapkan penggabungan dua buah larik yang kemudian elemen-elemennya akan kita urutkan. Untuk setiap larik kita lakukan penggabungan (merging) dengan larik di sebelahnya dengan meletakan elemen yang lebih kecil disebelah kiri kemudian penggabungan diteruskan hingga mendapatkan kembali 1 larik yang utuh. Ilustrasi nya sebagai berikut :

Semula

10

12

32

56

34

11

99

Semula

10

12

32

56

34

11

99

Semula

0 5 10 12

6 32 34 56

11

99

Semula

0 5 6 10 12 32 34

56

11

99

Semula

0 5 6 10 11 12 32 34 56 99

B. Algoritma Shell sort, quick sort, dan merge sort. 1. Shell sort. Untuk algoritma dari metode ini dapat dituliskan sebagai berikut : 1. Jarak N

2. Selama (jarak > 1) kerjakan baris 3 sampai dengan 9 3. Jarak jarak /2. Sudah false

4. Kerjakan baris 4 sampai dengan 8 selama sudah = false 5. Sudah 6. J 0 true

7. Selama (j < N jarak) kerjakan baris 8 dan 9 8. Jika (data[j] > data [j + jarak] maka tukar data[j], data [j + jarak]. Sudah true 9. j j+1

Sedangkan pendklarasiannya secara umum yakni sebagai berikut : Deklarasi I : integer J : integer Jarak : integer Deskripsi Jarak _ N div 2 While jarak > 0 do For I _ 1 to N Jarak do J _ I+Jarak If A[I] > A[J] then Tukar(A[I], A[J]) Endif Jarak _ Jarak div 2 Endfor Endwhile 2. Quick sort. a. Metode quick sort rekursif. Untuk algoritma quick sort rekursif dapat ditulis sebagai berikut : 1. X 2. I 3. J Data [ (L + R) /2] L R

4. Selama (I <= j) kerjakan baris 5 sampai dengan 12 5. Selama (data[i] <x) kerjakan i 6. Selama (data[j] > x) kerjakan j I+1 j1
6

7. Jika ( i<=j) maka kerjakan baris 8 sampai dengan 10; jika tidak kerjakan baris 11 8. Tukar data[i] dengan data[j] 9. i 10. j I+1 j1

11. Jika (L < j) kerjakan lagi baris 1 dengan R = j 12. Jika (I < R) kerjakan lagi baris 1 dengan L = i b. Metode quick sort non rekursif. Implementasi secara non rekursif memerlukan dua buah tumpukan (stack) yang digunakan yang digunakan untuk menyimpan batas-batas subbagian. Pada prosedur ini menggunakan tumpukan yang bertipe record (struktur) yang terdiri dari elemen kiri (untuk mencatat batas kiri) dan kanan (untukmencatat batas kanan.Tumpukan dalama hal ini dideklarasikan sebagai array. Algoritma quick sort non rekursif dapat dituliskan sebagai berikut : 1. Tumpukan[1].Kiri 0 2. Tumpukan[1].Kanan N-1 3. Selama ujung 0 kerjakan baris 4 sampai dengan 22 4. L Tumpukan[ujung].Kiri 5. R Tumpukan[ujung].Kanan 6. ujung ujung 1 7. Selama (R > L) kerjakan baris sampai 8 dengan 22 8. i L 9. j R 10. x Data[(L + R) / 2] 11. Selama i <= j kerjakan baris 12 sampai dengan 14 12. Selama (Data[i] < x), i i + 1

13. Selama (x < Data[j]), j j 1 14. Jika (i <= j) maka kerjakan baris 15 sampai dengan 17, jika tidak ke baris 11 15. Tukar Data[i] dengan Data[j] 16. i i + 1 17. j j 1 18. Jika (L < i) maka kerjakan baris 19 sampai dengan 21 19. ujung ujung + 1 20. Tumpukan[ujung].Kiri = i 21. Tumpukan[ujung].Kanan = R 22. R j 3. Merge sort. Berikut contoh bentuk pendeklarasian dari metode merge sort : Cacah : integer B : Larik Deskripsi Cacah _ 1 While Cacah < N do Iterasi(A, B, N, Cacah) Cacah _ Cacah * 2 Iterasi(B, A, N, Cacah) Cacah _ Cacah * 2 Endwhile C. Contoh program shell sort, quick sort, dan merge sort. 1. Shell sort.

void ShellSort(int N) { int Jarak, i, j; bool Sudah; Jarak = N; while(Lompat > 1) { Jarak = Jarak / 2; Sudah = false; while(!Sudah) { Sudah = true; for(j=0; j<N-Jarak; j++) { i = j + Jarak; if(Data[j] > Data[i]) { Tukar(&Data[j], &Data[i]); Sudah = false; } } } } } 2. Quick sort.
9

A. Metode quick sort rekursif. void QuickSortRekursif(int L, int R) { int i, j, x; x = data[(L+R)/2]; i = L; j = R; while (i <= j) { while(Data[i] < x) i++; while(Data[j] > x) j--; if(i <= j) { Tukar(&Data[i], &Data[j]); i++; j--; } } if(L < j) QuickSortRekursif(L, j); if(i < R) QuickSortRekursif(i, R); }
10

B. Metode quick sort non rekursif. void QuickSortNonRekursif(int N) { const M = MaxStack; struct tump { int Kiri; int Kanan; } Tumpukan[M]; int i, j, L, R, x, ujung = 1; Tumpukan[1].Kiri = 0; Tumpukan[1].Kanan = N-1; while (ujung!=0) { L = Tumpukan[ujung].Kiri; R = Tumpukan[ujung].Kanan; ujung--; while(R > L) { i = L; j = R; x = Data[(L+R)/2]; while(i <= j) {
11

while(Data[i] < x) i++; while(x < Data[j]) j--; if(i <= j) { Tukar(&Data[i], &Data[j]); i++; j--; } } if(L < i) { ujung++; Tumpukan[ujung].Kiri = i; Tumpukan[ujung].Kanan = R; } R = j; } } } 3. Merge sort. Di bawah ini merupakan prosedur penggabungan dua kumpulan data yang sudah dalam keadaan urut. void MergeSort(int T1[],int T2[],int J1,int J2, int T3[],int *J3)

12

{ int i=0, j=0; int t=0; while ((i<J1)||(j<J2)) { if(T1[i]<T2[j]) { T3[t] = T1[i]; i++; } Else { T3[t] = T2[j]; j++; } t++; } if(i>J1) for(i=j; i<J2; i++) { T3[t] = T2[i]; t++; } if(j>J2) for(j=i; j<J1; j++)
13

{ T3[t] = T1[j]; t++; } J3 = t; }

14

BAB III PENUTUP A. Kesimpulan. Dari semua metode yang telah dipelajari dapat ditarik suatu kesimpulan bahwa metode bubble sort adalah metode yang paling mudah untuk digunakan, namun metode ini tidak efisien jika dibandingkan dengan metode-metode lainnya dalam melakukan pengurutan, serta metode quick sort dan metode merge sort dapat dilakukan dengan menggunakan rekursif atau non rekursif. B. Saran. Pemahaman akan penggunaan metode sorting yang baik akan membantu programmer dalam pengurutan data, baik data yang sudah diurut ataupun tidak dan jumlah data yang banyak ataupun sedikit. Penulis yakin, dengan memahami metode sorting secara baik, akan meringankan dalam pencarian data dan pengurutannya.

15

DAFTAR PUSTAKA http://bab-8sorting-searching.html http://datastructure-bab6.html http://modeul-iv.html http://hanz-kampus.blogspot.com/2009/01/metode-pengurutan-data.html http://hack.spyrozone.net/0221_Struktur_Data_Sorting_Method_by_y3pp www.informatika.unsyiah.ac.id/tfa/ds/bubblesort.pdf

16

You might also like