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

dokumen-dokumen yang mirip
Kuliah ke : 4 Algoritma & Stuktur Data. Pengurutan (Sorting)

Pengurutan (Sorting) Algoritma Pemrograman

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

BAB V SORTING (PENGURUTAN) INTERNAL

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

MODUL IV PENCARIAN DAN PENGURUTAN

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

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

Algoritma dan Pemrograman 2 PENGURUTAN

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

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

PENGURUTAN DATA 2.1 Definisi Pengurutan 2.2 Metode-metode Pengurutan

ALGORITMA PENGURUTAN & PENCARIAN

Bubble Sort (Pengurutan Gelembung / Pemberatan)

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

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

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

BAB VI SEARCHING (PENCARIAN)

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Algoritma dan Pemrograman 2 PENGURUTAN

Kompleksitas Algoritma

Algoritma Brute Force

Searching [pencarian] Algoritma Pemrograman

Pengurutan (Sorting)

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

Kompleksitas Algoritma

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Materi 4: SORTING (PENGURUTAN) Dosen:

Array (Tabel) bagian 2

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Pengurutan pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Kompleksitas Algoritma (1)

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

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

CCH1A4 / Dasar Algoritma & Pemrogramanan

BAB VI Pengurutan (Sorting)

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

SORTING (PENGURUTAN DATA)

SORTING. Brigida Arie Minartiningtyas, M.Kom

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

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

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

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Algoritma dan Pemrograman Array/Tabel[2] Oleh: Eddy Prasetyo N

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

Pengertian Algoritma Pengurutan

STRUKTUR DATA SORTING ARRAY

Kompleksitas Algoritma Sorting yang Populer Dipakai

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

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Algoritma dan Pemrograman Array/Tabel[3] Oleh: Eddy Prasetyo N

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

7. SORTING DAN SEARCHING

Algoritma Brute Force

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

1 Pencarian. 1.1 Tinjauan Singkat Larik

BAB 8 SORTING DAN SEARCHING

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

c. Hasil pencarian berupa nilai Boolean yang menyatakan status hasil pencarian. Versi 1 (Pembandingan elemen dilakukan sebagai kondisi pengulangan)

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

STRATEGI DIVIDE AND CONQUER

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

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

CCH1A4 / Dasar Algoritma & Pemrogramanan

Pencarian. 1. Memahami konsep pencarian 2. Mengenal beberapa algoritma pencarian 3. Menerapkan algoritma pencarian dalam program

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

Algoritma dan Pemrograman Searching/Pencarian

BAB VI SORTIR ATAU PENGURUTAN

Algoritma dan Pemrograman 2 PENCARIAN

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

Teknik Pengurutan Kartu Remi

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

JURNAL TEKNOLOGI INFORMASI & PENDIDIKAN ISSN : VOL. 6 NO. 1 Maret 2013

BAB VII ALGORITMA DIVIDE AND CONQUER

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

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

Sorting Algorithms. Buble Sort

BAB I PENDAHULUAN.

*** SELAMAT MENGERJAKAN

BAB 1 PENDAHULUAN Latar Belakang

SEARCHING & SORTING. Pendahuluan

Algoritma Bubble Sort dan Quick Sort

Powered by icomit.wordpress.com

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

STRUKTUR DATA (3) sorting array. M.Cs

Gambar 13.1 Ilustrasi proses algoritma sorting

Algoritma dan Struktur Data

Algoritma Divide and Conquer (Bagian 1)

Sorting Algorithms. Definisi

Algoritma dan Struktur Data. Searching dan Sorting

Transkripsi:

Pengurutan (Sorting) Pengurutan adalah proses mengatur sekumpulan obyek menurut urutan atau susunan tertentu. Urutan obyek tersebut dapat menaik atau menurun. Bila N obyek disimpan dalam larik L, maka pengurutan menaik berarti menyusun elemen larik sedemikian sehingga: L[1] L[2] L[3] L[N] Kamis, 25 Mei 2006 dan Pemrograman II 1 Sedangkan pengurutan menurun berarti menyusun elemen larik sedemikian sehingga: L[1] L[2] L[3] L[N] Data yang diurut dapat berupa data bertipe numerik dasar atau tipe bentuk. Jika data bertipe bentukan (rekaman), maka harus dijelaskan berdasarkan field apa data tersebut diurutkan. Contoh: (i) 23, 27, 45, 67 (data integer terurut menaik) (ii) 25.12, 20.19,-12.20 (data riil terurut menurun) (iii) Amir, Badu, Budi, Dudi (data string terurut manaik) (iv) <08053110001, Eko, A>, < 08053110011, Reza, C>, <08053110012, Sam, E> (data mahasiswa terurut menaik berdasarkan field NIM) Kamis, 25 Mei 2006 dan Pemrograman II 2 Keuntungan Data Terurut Mempercepat pencarian; Mudah menentukan data maksimum / minimum. Kamis, 25 Mei 2006 dan Pemrograman II 3 Pengurutan Terbagi Dua Kelompok: Pengurutan Internal adalah pengurutan terhadap sekumpulan data yang disimpan di dalam memori utama komputer. Umumnya struktur data yang dipakai adalah larik, sehingga pengurutan internal disebut juga pengurutan larik. Pengurutan Eksternal adalah pengurutan data yang disimpan di dalam memori sekunder, biasanya data bervolume besar sehingga tidak mampu dimuat semuanya dalam memori komputer, disebut juga pengurutan arsip (file), karena struktur eksternal yang dipakai adalah arsip. Kamis, 25 Mei 2006 dan Pemrograman II 4

Macam-macam Pengurutan Bubble Sort; Maximum/Minimum Sort (Selection Sort); Insertion Sort; Heap Sort; Shell Sort; Quick Sort; Merge Sort; Radix Sort; Tree Sort, dan lain-lain. Kamis, 25 Mei 2006 dan Pemrograman II 5 Bubble Sort (Pengurutan Gelembung) Metode pengurutan gelembung diinspirasikan oleh gelembung sabun yang berada dipermukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Prinsip di atas dipakai pada pengurutan gelembung. Elemen larik yang berharga paling kecil diapungkan, artinya diangkat ke atas (ke ujung kiri larik) melalui proses pertukaran. Proses pengapungan terdiri dari N- 1 langkah. Setiap akhir langkah ke-i, larik L[1..N] akan terdiri atas dua bagian, yaitu bagian yang sudah terurut, L[1..I] dan bagian yang belum terurut, L[I+1..N]. Langkah terakhir, diperoleh larik L[1..N] yang sudah terurut. Kamis, 25 Mei 2006 dan Pemrograman II 6 Pengurutan Gelembung Untuk mendapatkan larik yang terurut menaik, proses yang dilakukan pada setiap langkah sebagai berikut: Langkah 1: Mulai elemen K =N, N-1,, 2, bandingkan L[K] dengan L[K-1]. Jika L[K] < L[K-1], pertukarkan L[K] dengan L[K-1]. Pada akhir langkah 1, elemen L[1] berisi harga minimum pertama. Langkah 2: Mulai elemen K =N, N-1,, 3, bandingkan L[K] dengan L[K-1]. Jika L[K] < L[K-1], pertukarkan L[K] dengan L[K-1]. Pada akhir langkah 2, elemen L[2] berisi harga minimum kedua dan larik L[1..2] terurut. Langkah N-1: Mulai elemen K =N, bandingkan L[K] dengan L[K-1]. Jika L[K] < L[K-1], pertukarkan L[K] dengan L[K-1]. Pada akhir langkah N-1, elemen L[N-1] berisi harga minimum ke-(n-1) dan larik L[1..N-1] terurut menaik, sehingga elemen yang tersisa adalah L[N] yang tidak perlu lagi diurutkan karena hanya satusatunya. Kamis, 25 Mei 2006 dan Pemrograman II 7 procedure UrutGelembung(input/output L: Larik; input N : integer) Kamus K : integer {pencacah untuk pengapungan pada setiap langkah} for K N downto I+1 do if L[K] < L[K-1] then {pertukarkan L[K] dengan L[K-1]} Temp L[K] L[K] L[K-1] L[K-1] Temp Kamis, 25 Mei 2006 dan Pemrograman II 8

procedure UrutGelembung1(input/output L: Larik; input N : integer) Kamus K : integer {pencacah untuk pengapungan pada setiap langkah} Tukar : boolean {flag untuk mengidentifikasi adanya pertukaran, bernilai true jika dalam satu langkah ada pertukaran} I 1 Tukar true while I N-1 AND Tukar do Tukar false for K N downto I+1 do if L[K] < L[K-1] then {pertukarkan L[K] dengan L[K-1]} Temp L[K] L[K] L[K-1] L[K-1] Temp Tukar true I I + 1 endwhile { I = N or not Tukar } Pengurutan Gravitasi Pengurutan gravitasi sebagai kebalikan dari pengurutan gelembung, yaitu membenamkan elemen larik yang berharga paling besar ke bawah, jadi proses pemberatan selalui dimulai dari atas ke bawah. Kamis, 25 Mei 2006 dan Pemrograman II 9 Kamis, 25 Mei 2006 dan Pemrograman II 10 procedure UrutGravitasi(input/output L: Larik; input N : integer) Kamus K : integer {pencacah untuk pemberatan pada setiap langkah} U : integer {indeks ujung kiri bagian larik yang telah terurut} U N for K 1 to U-1 do if L[K] > L[K+1] then {pertukarkan L[K] dengan L[K+1]} Temp L[K] L[K] L[K-1] L[K-1] Temp { larik L[U..N] terurut, larik L[1..U-1] belum terurut } U U - 1 Pengurutan Maksimum/Minimum Gagasan maksimum/minimum adalah memilih elemen maksimum/minimum kemudian mempertukarkan elemen maksimum/minimum tersebut dengan elemen terujung larik (elemen ujung kiri atau elemen ujung kanan). Selanjutnya elemen terujung tersebut diisolasi dan tidak disertakan pada proses selanjutnya. Proses yang sama diulang untuk elemen larik yang tersisa, yaitu memilih elemen maksimum/minimum berikutnya dan mempertukarkannya dengan elemen terujung larik sisa. Kamis, 25 Mei 2006 dan Pemrograman II 11 Kamis, 25 Mei 2006 dan Pemrograman II 12

Pengurutan Maksimum Elemen larik akan diurut menaik: Langkah 1: Tentukan harga maksimum di dalam L[1..N]. Pertukarkan harga maksimum dengan elemen L[N]. Langkah 2: Tentukan harga maksimum di dalam L[1..N-1]. Pertukarkan harga maksimum dengan elemen L[N-1]. Langkah N-1: Tentukan harga maksimum di dalam L[1..2]. Pertukarkan harga maksimum dengan elemen L[2]. Kamis, 25 Mei 2006 dan Pemrograman II 13 procedure UrutMaksimum(input/output L: Larik, input N : integer) J : integer {pencacah untuk mencari nilai maksimum} U : integer {indeks ujung kiri bagian larik yang telah terurut} Maks : integer {nilai maksimum sementara} Imaks : integer {indeks yang berisi nilai maksimum sementara} U N Maks L[1] Imaks 1 for J 2 to U do if L[J] > L[Imaks] then Maks L[J] Imaks J Temp L[U] L[U] L[Imaks] L[Imaks] Temp { larik L[U..N] terurut, larik L[1..U-1] belum terurut } U U - 1 Kamis, 25 Mei 2006 dan Pemrograman II 14 Pengurutan Maksimum dengan Elemen Larik Diurut Menurun Langkah 1: Tentukan harga maksimum di dalam L[1..N]. Pertukarkan harga maksimum dengan elemen L[1]. Langkah 2: Tentukan harga maksimum di dalam L[2..N]. Pertukarkan harga maksimum dengan elemen L[2]. Langkah N-1: Tentukan harga maksimum di dalam L[N-1,N]. Pertukarkan harga maksimum dengan elemen L[N-1]. procedure UrutMaks_Menurun(input/output L: Larik, input N : integer) I : integer{pencacah untuk jumlah langkah} J : integer {pencacah untuk mencari nilai maksimum} Imaks : integer {indeks yang berisi nilai maksimum sementara} Imaks I for J I+1 to N do if L[J] > L[Imaks] then Imaks J Temp L[I] L[I] L[Imaks] L[Imaks] Temp Kamis, 25 Mei 2006 dan Pemrograman II 15 Kamis, 25 Mei 2006 dan Pemrograman II 16

Pengurutan Minimum Elemen larik akan diurut minimum menaik: Langkah 1: Tentukan harga minimum di dalam L[1..N]. Pertukarkan harga minimum dengan elemen L[N]. Langkah 2: Tentukan harga minimum di dalam L[1..N- 1]. Pertukarkan harga minimum dengan elemen L[N- 1]. Langkah N-1: Tentukan harga minimum di dalam L[1..2]. Pertukarkan harga minimum dengan elemen L[2]. Kamis, 25 Mei 2006 dan Pemrograman II 17 procedure UrutMin(input/output L: Larik, input N : integer) J : integer {pencacah untuk mencari nilai minimum} U : integer {indeks ujung kiri bagian larik yang telah terurut} Imin : integer {indeks yang berisi nilai minimum sementara} U N Imin 1 for J 2 to U do if L[J] < L[Imin] then Imin J Temp L[U] L[U] L[Imin] L[Imin] Temp { larik L[U..N] terurut, larik L[1..U-1] belum terurut } U U - 1 Kamis, 25 Mei 2006 dan Pemrograman II 18 Pengurutan Minimum dengan Elemen Larik Diurut Menurun Langkah 1: Tentukan harga minimum di dalam L[1..N]. Pertukarkan harga minimum dengan elemen L[1]. Langkah 2: Tentukan harga minimum di dalam L[2..N]. Pertukarkan harga minimum dengan elemen L[2]. Langkah N-1: Tentukan harga minimum di dalam L[N-1,N]. Pertukarkan harga minimum dengan elemen L[N-1]. Kamis, 25 Mei 2006 dan Pemrograman II 19 procedure UrutMin_Menurun(input/output L: Larik, input N : integer) J : integer {pencacah untuk mencari nilai minimum} Imin : integer {indeks yang berisi nilai minimum sementara} Imin I for J I+1 to N do if L[J] < L[Imin] then Imin J Temp L[I] L[I] L[Imin] L[Imin] Temp Kamis, 25 Mei 2006 dan Pemrograman II 20

Pengurutan Sisip (Insertion Sort) Pengurutan sisip adalah metode pengurutan dengan cara menyisipkan elemen larik pada posisi yang tepat. Pencarian posisi yang tepat dilakukan dengan melakukan pencarian beruntun di dalam larik. Selama pencarian posisi yang tepat dilakukan pergeseran elemen larik. Pengurutan Sisip yang Menaik Andaikan: L[1] dianggap sudah pada tempatnya Langkah 2: L[2] harus dicari tempatnya yang tepat pada L[1..2] dengan cara menggeser elemen L[1..1] ke kanan (atau ke bawah, jika anda membayangkan larik terentang vertikal) bila L[1..1] lebih besar daripada L[2]. Misalkan posisi yang tepat adalah K. Sisipkan L[2] pada L[K]. Langkah 3: L[3] harus dicari tempatnya yang tepat pada L[1..3] dengan cara menggeser elemen L[1..2] ke kanan (atau ke bawah) bila L[1..2] lebih besar daripada L[3]. Misalkan posisi yang tepat adalah K. Sisipkan L[3] pada L[K]. Langkah N: L[N] harus dicari tempatnya yang tepat pada L[1..N] dengan cara menggeser elemen L[1..N-1] ke kanan (atau ke bawah) bila L[1..N-1] lebih besar daripada L[N]. Misalkan posisi yang tepat adalah K. Sisipkan L[N] pada L[K]. Hasil dari langkah N: Larik L[1..N] sudah terurut, yaitu L[1] L[N] Kamis, 25 Mei 2006 dan Pemrograman II 21 Kamis, 25 Mei 2006 dan Pemrograman II 22 procedure UrutSisip(input/output L: Larik, input N : integer) K : integer {pencacah langkah} J : integer {pencacah untuk penelusuran larik} Temp : integer {peubah bantu untuk agar L[K] tidak ditimpa selama pergeseran} ALGORITMA {elemen L[1] dianggap sudah terurut} for K 2 to N do {mulai dari langkah 2 sampai langkah N} Temp L[K] {ambil elemen L[K] supaya tidak ditimpa pergeseran} {cari posisi yang tepat untuk L[K] di dalam L[1..K-1] sambil menggeser} J K - 1 while Temp L[J] AND (J > 1) do J J-1 endwhile if Temp L[J] then L[J+1] Temp else L[J] Temp Kamis, 25 Mei 2006 dan Pemrograman II 23 procedure UrutSisip_Turun(input/output L: Larik, input N : integer) K : integer {pencacah langkah} J : integer {pencacah untuk penelusuran larik} Temp : integer {peubah bantu untuk agar L[K] tidak ditimpa selama pergeseran} ALGORITMA {elemen L[1] dianggap sudah terurut} for K 2 to N do {mulai dari langkah 2 sampai langkah N} Temp L[K] {ambil elemen L[K] supaya tidak ditimpa pergeseran} {cari posisi yang tepat untuk L[K] di dalam L[1..K-1] sambil menggeser} J K - 1 while Temp L[J] AND (J > 1) do J J-1 endwhile {Temp > L[J] or J = 1} if Temp L[J] then L[J+1] Temp else L[J+1] Temp Kamis, 25 Mei 2006 dan Pemrograman II 24