BAB 8 SORTING DAN SEARCHING

dokumen-dokumen yang mirip
7. SORTING DAN SEARCHING

SORTING. Brigida Arie Minartiningtyas, M.Kom

ALGORITMA PENGURUTAN & PENCARIAN

STRUKTUR DATA SORTING ARRAY

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

Algoritma Sorting. Ahmad Kamsyakawuni, S.Si, M.Kom. Jurusan Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Jember

STRUKTUR DATA (3) sorting array. M.Cs

SORTING (PENGURUTAN DATA)

Algoritma dan Struktur Data. Searching dan Sorting

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

PERTEMUAN 10 METODE DEVIDE AND CONQUER

Gambar 13.1 Ilustrasi proses algoritma sorting

PERTEMUAN 10 METODE DEVIDE AND CONQUER

Pengertian Algoritma Pengurutan

STRATEGI DIVIDE AND CONQUER

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

SORTING ARRAY FAKULTAS TEKNOLOGI INFORMASI UNISBANK SEMARANG : ANDY KRISTIANTO : Disusun Oleh :

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 12 & 13

MODUL IV PENCARIAN DAN PENGURUTAN

Pengurutan (Sorting) Algoritma Pemrograman

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Algoritma dan Struktur Data

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

BAB 8 SORTIR. Pengurutan data (sorting) adalah suatu proses untuk menyusun kembali himpunan obyek menggunakan aturan tertentu.

BAB VI Pengurutan (Sorting)

SEQUENTIAL SEARCH 11/11/2010. Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 14 & 15

Algoritma dan Pemrograman Sorting (Pengurutan) IS1313. Oleh: Eddy Prasetyo N

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

SORTING (BAGIAN II) Proses kelima

BAB VI SEARCHING (PENCARIAN)

BAB VII ALGORITMA DIVIDE AND CONQUER

A. TUJUAN PEMBELAJARAN

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Sorting. Quick Sort

Praktikum 8. Pengurutan (Sorting) Bubble Sort, Shell Sort

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-8 Pengurutan (Sorting) 1

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

Modul Praktikum Algoritma dan Struktur Data

Kuliah ke : 4 Algoritma & Stuktur Data. Pengurutan (Sorting)

Pengurutan (Sorting) Keuntungan Data Terurut. Pengurutan Terbagi Dua Kelompok:

BAB 2 LANDASAN TEORI

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Bubble Sort dan Shell-Sort. Yuliana Setiowati

DATA SORTING. Altien Jonathan Rindengan, S.Si, M.Kom

BAB V SORTING (PENGURUTAN) INTERNAL

Kompleksitas Algoritma Sorting yang Populer Dipakai

Sorting Algorithms. Definisi

Politeknik Elektronika Negeri Surabaya

Meizano Ardhi M., S.T.

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

BAB V SORT. Proses penukaran tidak dapat langsung dilakukan dengan cara : nilai[1] = nilai[2]; nilai[2] = nilai[1];

Algoritma Bubble Sort dan Quick Sort

Modul 8 SORTING (PENGURUTAN)

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

PENGURUTAN (SORTING) 1. Introduction 2. Bubble Sort 3. Selection Sort 4. Insertion Sort

SORTING. Hartanto Tantriawan, S.Kom., M.Kom

SEARCHING & SORTING. Pendahuluan

Sorting. Pertemuan ke 14.

Nama : Suseno Rudiansyah NPM : Kelas : X2T Prodi : Teknik Informatika Tugas : Kuis Algoritma 2

MODUL PRAKTIKUM STRUKTUR DATA

BAB I PENDAHULUAN.

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

Teknik Pengurutan Kartu Remi

Algoritme dan Pemrograman

Politeknik Elektronika Negeri Surabaya

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

Powered by icomit.wordpress.com

SORTING ALGORITMA. Bubble Sort JANUARY 14, 2016

Outline STRUKTUR DATA. VII. Sorting

Kompleksitas Algoritma

Pendahuluan. Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Algoritma yang bagus adalah algoritma yang efektif dan efisien.

Kompleksitas Algoritma (1)

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

Alpro & Strukdat 1 C++ (Sorting) Dwiny Meidelfi, M.Cs

METODE DEVIDE AND CONQUER

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Sorting. Struktur Data dan Algoritma. Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) Fasilkom UI

2. Sebuah prosedur langkah demi langkah yang pasti untuk menyelesaikan sebuah masalah disebut : a. Proses b. Program c. Algoritma d. Prosesor e.

Algoritma dan Pemrograman Searching/Pencarian

Politeknik Elektronika Negeri Surabaya

Gambar 1. Langkah-langkah pengurutan metode Insertion Sort (1)

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

Kompleksitas Algoritma

Bubble Sort (Pengurutan Gelembung / Pemberatan)

ANALISIS PERBANDINGAN METODE ALGORITMA QUICK SORT DAN MERGE SORT DALAM PENGURUTAN DATA TERHADAP JUMLAH LANGKAH DAN WAKTU

PERTEMUAN 15 REVEW/QUIZ

Sorting adalah proses mengatur sekumpulan objek menurut aturan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending = dari data kecil

12/26/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Sorting. Data untuk sorting. Contoh. Algoritme #1: BUBBLE SORT.

Pencarian (Searching)

A. TUJUAN PEMBELAJARAN

HEAP. Heap dan Operasinya. Oleh Andri Heryandi

Struktur Data Linier. Input. Program untuk menyelesaikan masalah. Algoritma Penyelesaian. Proses. Masalah. Struktur Data. Output

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

SORTING (Pengurutan)

Transkripsi:

53 BAB 8 SORTING DAN SEARCHING TUJUAN PRAKTIKUM 1. Praktikan dapat memilih teknik sorting mana yang sesuai serta dapat menggunakan teknik searching dalam mencari elemen pada suatu data. 2. Praktikan diharapkan dapat mengenal jenis-jenis metode sorting dan searching, serta mampu menerapkannya didalam sebuah program sederhana. TEORI PENUNJANG 8.1. Metode Sorting Sorting bisa didefinisikan sebagai suatu proses pengurutan data yang sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu. Sorting yang kita terapkan menggunakan tipe data array agar pemahaman serta pengimplementasiannya lebih mudah. Pada umumnya terdapat dua jenis pengurutan : - Ascending (Naik). - Descending (Turun). Contoh : Data : Array [1..6] of Byte = (22, 10, 15, 3, 8, 2); Data Acak : 22 10 15 3 8 2 Terurut Ascending : Terurut Descending : 22 15 10 8 3 2 Untuk melakukan proses pengurutan tersebut dapat digunakan berbagai macam cara/metode.

54 Beberapa metode yang sudah umum digunakan diantaranya adalah : 1. Bubble / Exchange Sort 2. Selection Sort. 3. Shell Sort. 4. Quick Sort. Metode Pengurutan Data Pengurutan berdasarkan perbandingan (comparison-based sorting) Bubble sort, exchange sort Pengurutan berdasarkan prioritas (priority queue sorting method) Selection sort, heap sort Pengurutan berdasarkan penyisipan dan penjagaan terurut (insert and keep sorted method) Insertion sort, tree sort Pengurutan berdasarkan pembagian dan penguasaan (devide and conquer method) Quick sort, merge sort Pengurutan berkurang menurun (diminishing increment sort method) Shell sort 8.2. Bubble/Exchange Sort Metode ini merupakan metode yang paling sederhana dan paling tidak efisien, karena memerlukan waktu yang relatif lebih lama dibandingkan dengan metodemetode yang lainnya. Konsep dasar dari Bubble sort ialah membandingkan elemen yang sekarang degan elemen yang berikutnya, jika elemen sekarang > elemen berikutnya (untuk ascending), maka dilakukan proses penukaran. Proses sorting dapat dimulai dari data awal atau data akhir. Contoh dari proses Sorting dengan menggunakan metode Bubble Sort :

55 Tabel 8.1 Contoh Sorting dengan Bubble Sort Iterasi Ke A[1] A[2] A[3] A[4] A[5] A[6] Awal 22 10 15 3 2 8 1 10 22 15 3 2 8 10 15 22 3 2 8 10 15 3 22 2 8 10 15 3 2 22 8 10 15 3 2 8 22 2 10 15 3 2 8 22 10 3 15 2 8 22 10 3 2 15 8 22 10 3 2 8 15 22 10 3 2 8 15 22 3 3 10 2 8 15 22 3 2 10 8 15 22 3 2 8 10 15 22 3 2 8 10 15 22 3 2 8 10 15 22 4 5 Akhir Di sini terlihat ketidakefisienan dari bubble sort yaitu harus menyelesaikan JumMax 1 dari data. Sedangkan jika kita melihat dari tabel diatas pada iterasi ke empat saja data sudah terurut dan seharusnya pada saat itu proses sudah berhenti, tapi dengan bubble sort proses harus dilakukan sampai looping selesai. Pada seluruh prosedur yang menggunakan metode sorting pasti memerlukan prosedur tambahan tukar data (Swap) untuk menukarkan dua buah elemen dalam data. Berikut ini merupakan prosedur untuk menukarkan dua buah data.

56 Procedure SWAP(Var A,B : Char); Var Temp : Char; Temp := A; A := B; B := Temp; Berikut ini merupakan Procedure BubbleSort pada Pascal : Procedure Bubble(Var Temp : Data; JmlData : Integer); Var I,J : Integer; For I:=2 To JmlData Do For J:=JmlData DownTo I Do If Temp[J] < Temp[J-1] Then {Untuk Descending >} SWAP(Temp[J], Temp[J-1]); 8.3. Selection Sort Cara kerja metode ini didasarkan pada pencarian elemen dengan nilai terkecil, kemudian dilakukan penukaran dengan elemen ke-i. Secara singkat, metode ini bisa dijelaskan sebagai berikut. Pada langkah pertama, dicari data yang terkecil dari data pertama sampai data terakhir. Kemudian data tersebut kita tukar dengan data pertama. Dengan demikian, data pertama sekarang mempunyai nilai paling kecil dibanding data lain. Pada langkah kedua, data terkecil kita cari mulai dari data kedua sampai data terakhir. Data terkecil yang kita peroleh kita tukar dengan data kedua. Demikian seterusnya sampai suluruh data terurut. Contoh dari proses Sorting dengan menggunakan metode Selection Sort :

57 Tabel 8.2 Contoh sorting dengan Selection Sort Iterasi Ke A[1] A[2] A[3] A[4] A[5] A[6] Awal 22 10 15 3 2 8 I=1, Lok=5 2 10 15 3 22 8 I=2, Lok=4 2 3 15 10 22 8 I=3, Lok=6 2 3 8 10 22 15 I=4, Lok=4 2 3 8 10 22 15 I=5, Lok=6 Akhir Berikut ini merupakan Procedure Selection Sort pada Pascal : Procedure Selection(Var Temp : Data; JmlData : Integer); Var I,J, Lok : Integer; For I:=1 To JmlData-1 Do Lok:=I; For J:=I+1 To JmlData Do If Temp[Lok] > Temp[J] Then Lok:=J; SWAP(Temp[I], Temp[Lok]); 8.4. Shell Sort Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959. Dalam metode ini jarak antara dua elemen yang dibandingkan dan ditukarkan tertentu. Secara singkat metode ini dijelaskan sebagai berikut. Pada langkah pertama, kita ambil elemen pertama dan kita bandingkan dengan elemen pada jarak tertentu dari elemen pertama tersebut. Kemudian elemen kedua kita bandingkan dengan

58 elemen lain dengan jarak yang sama seperti diatas. Demikian seterusnya sampai seluruh elemen dibandingkan. Pada langkah kedua proses diulang dengan langkah yang lebih kecil, pada langkah ketiga jarak tersebut diperkecil lagi seluruh proses dihentikan jika jarak sudah sama dengan satu. Contoh dari proses Sorting dengan menggunakan metode Shell Sort : Tabel 8.3 Contoh sorting dengan Shell Sort Jarak A[1] A[2] A[3] A[4] A[5] A[6] Awal 22 10 15 3 2 8 Jarak = 3 22 10 15 3 2 8 3 10 15 22 2 8 3 2 15 22 10 8 3 2 8 22 10 15 Jarak = 1 3 2 8 22 10 15 2 3 8 22 10 15 2 3 8 22 10 15 2 3 8 22 10 15 2 3 8 10 22 15 Akhir Berikut ini merupakan Procedure ShellSort pada Pascal : Procedure Shell(Var Temp : Data; JmlData : Integer); Var I,J, Jarak : Integer; Jarak := JmlData Div 2; While Jarak > 0 Do For I:=1 To JmlData-Jarak Do J := I + Jarak; If Temp[I] > Temp[J] Then SWAP(Temp[I], Temp[Lok]); Jarak := Jarak Div 2;

59 8.5. Quick Sort Metode ini dikembangkan oleh C.A.R Hoare. Secara garis besar metode ini dijelaskan sebagai berikut. Misalnya kita ingin mengurutkan data A yang mempunyai N elemen. Kita pilih sembarang elemen dari data tersebut, bisanya elemen pertama, misalnya 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 3 8 2 22 3 8 2 10 15 22 3 2 8 10 15 22 2 3 8 10 15 22 Gambar 8.1 Contoh sorting dengan Quick Sort Berikut ini merupakan Procedure QuickSort pada Pascal : Procedure Quick(Var Temp : Data; Awal, Akhir : Integer); Var I,J : Integer; Procedure ATUR; I:=Awal +1; J:= Akhir; While Temp[I] < Temp[Awal] Do Inc(I);

60 While Temp[J] > Temp[Awal] Do Dec(J); While I < J Do SWAP(Temp[I], Temp[J]); While Temp[I] < Temp[Awal] Do Inc(I); While Temp[J] > Temp[Awal] Do Dec(J); SWAP(Temp[Awal], Temp[J]); If Awal < Akhir Then ATUR; Quick(Temp, Awal, J-1); Quick(Temp,J+1,Akhir); 8.6. Metode Searching Searching merupakan suatu proses pendarian data dari sejumlah data yang ada. Pencarian data dapat dilakukan pada sejumlah data yang sudah terurut atau juga pada data yang sama sekali belum terurut. Kita mencoba menggunakan dua metode pencarian yaitu : - Pencarian Berurutan (Sequential Searching). - Pencarian Biner (Binary Seacrh). 8.6.1. Pencarian Berurutan (Sequential Searching) Metode ini merupakan metode paling sederhana, secara garis besar metode ini bisa dijelaskan sebagai berikut. Dari data yang diketahui, data yang dicari dibandingkan satu per satu sampai data tersebut ditemukan atau tidak ditemukan. Pada saat data yang dicari sudah ditemukan, maka proses pencarian langsung dihentikan. Tetapi jika belum ditemukan, maka pencarian diteruskan sampai seluruh data dibandingkan. Dalam kasus paling buruk, untuk data dengan N

61 elemen harus dilakukan pencarian sebanyak N kali pula. Ada baiknya jika data yang dicari tidak ditemukan maka data ditambahkan pada posisi terakhir. Berikut ini merupakan Procedure CariUrut pada Pascal : Procedure CariUrut(Var Ada : Boolean; Var N, Posisi : Integer; Var Temp : Data; Elemen : Char); Var I : Integer; Ada:=False; For I:=1 To N Do If Temp[I] = Elemen Then {Data yang dicari ketemu} Posisi:=I; Ada:=True; Exit; If Not Ada Then Inc(N); Temp[N]:=Elemen; {Tambah di posisi akhir} 8.6.2. Metode Pencarian Biner (Binary Search) Metode ini digunakan jika sejumlah data telah diurutkan. Jika dibandingkan dengan metode awal tadi metode ini jauh lebih cepat. Secara garis besar metode ini bisa dijelaskan sebagai berikut. Urutkan dahulu sejumlah data. Lalu bagi dua data-data tadi dengan jumlah data yang sama pada masing-masingnya. Kemudian data dibandingkan dengan data terakhir dari subdata yang pertama. Jika data yang dicari lebih keci, pencarian dilanjutkan pada sub data pertama dengan terlebih dahulu membagi dua lagi data-data tersebut dengan jumlah yang sama. Tetapi jika data yang dicari lebih besar dari data terakhir subdata pertama, berarti data yang dicari kemungkinan terletak pada subdata yang kedua. Proses diatas dilakukan berulang sampai data ditemukan atau tidak ditemukan.

62 Berikut ini merupakan Procedure CariBiner pada Pascal : Procedure CariBiner(Var Ada : Boolean; Var Posisi : Integer; Var Temp : Data; Elemen : Char; N : Integer); Var Atas, Bawah, Tengah : Integer; Ada:=False; Atas:=N; Bawah:=1; While Atas >= Bawah Do Tengah := (Atas + Bawah) Div 2; If Elemen < Temp[Tengah] Then Atas:=Tengah - 1 Else If Elemen > Temp[Tengah] Then Bawah := Tengah + 1 Else Ada:=True; Posisi:=Tengah; Bawah := Atas + 1; LAPORAN PENDAHULUAN 1. Jelaskan pengertian Search dan Sorting, beserta jenis-jenis dari Search dan Sorting. 2. Jelaskan bagaimana proses pencarian data menggunakan metode Bubble/Exchange Sort, Selection Sort, Shell Sort, Quick Sort. 3. Apa yang dimaksud dengan Binary Search serta bagaimana algoritmanya? 4. Buat data yang belum terurut lalu dengan menggunakan keempat metode diatas dan urutkan data tersebut langkah demi langkah.

63 LAPORAN AKHIR Buat Algoritma dari beberapa metode sorting yang sudah dipelajari sebelumnya.