Sorting (Pengurutan)

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

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

Pengurutan (Sorting) Algoritma Pemrograman

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

MODUL IV PENCARIAN DAN PENGURUTAN

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

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

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

BAB V SORTING (PENGURUTAN) INTERNAL

Algoritma dan Pemrograman 2 PENGURUTAN

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

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

ALGORITMA PENGURUTAN & PENCARIAN

Bubble Sort (Pengurutan Gelembung / Pemberatan)

PENGURUTAN DATA 2.1 Definisi Pengurutan 2.2 Metode-metode Pengurutan

Materi 4: SORTING (PENGURUTAN) Dosen:

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

Algoritma dan Pemrograman 2 PENGURUTAN

Pengurutan (Sorting)

Searching [pencarian] Algoritma Pemrograman

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

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

SORTING (PENGURUTAN DATA)

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

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

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

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

STRUKTUR DATA SORTING ARRAY

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

CCH1A4 / Dasar Algoritma & Pemrogramanan

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

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Algoritma Brute Force

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

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

BAB VI SEARCHING (PENCARIAN)

Pengertian Algoritma Pengurutan

Kompleksitas Algoritma (1)

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

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

BAB I PENDAHULUAN.

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

Kompleksitas Algoritma

Array (Tabel) bagian 2

Kompleksitas Algoritma

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

Modul 8 SORTING (PENGURUTAN)

Gambar 13.1 Ilustrasi proses algoritma sorting

Powered by icomit.wordpress.com

SORTING. Brigida Arie Minartiningtyas, M.Kom

BAB VI Pengurutan (Sorting)

Algoritma Divide and Conquer (Bagian 1)

Algoritma Bubble Sort dan Quick Sort

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

STRUKTUR DATA (3) sorting array. M.Cs

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

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

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

Algoritma dan Struktur Data

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

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

Kompleksitas Algoritma Sorting yang Populer Dipakai

Sorting (Bubble Sort)

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

Teknik Pengurutan Kartu Remi

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

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

BAB 8 SORTING DAN SEARCHING

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

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

BAB 2 LANDASAN TEORI

Modul Praktikum Algoritma dan Struktur Data

7. SORTING DAN SEARCHING

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

Data Structure SORTING. Chapter 11. Dahlia Widhyaestoeti, S.Kom

Algoritma Brute Force

Algoritma Divide and Conquer (Bagian 2)

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

Divide and Conqueradalah strategi militer yang dikenal dengan nama divide ut imperes.

SORTING ALGORITMA. Bubble Sort JANUARY 14, 2016

Sorting Algorithms. Buble Sort

Algoritma Divide and Conquer. (Bagian 2)

1 Pencarian. 1.1 Tinjauan Singkat Larik

SORTING (Pengurutan)

Algoritma dan Pemrograman Searching/Pencarian

METODE DEVIDE AND CONQUER

PERTEMUAN 10 METODE DEVIDE AND CONQUER

VISUALISASI LOGIKA ALGORITMA PENGURUTAN DATA MENGGUNAKAN JAVA

PENGURUTAN (SORTING) 1. Overview

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Sorting. Quick Sort

Array. Teknik Informatika Politeknik Negeri Batam

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Larik/Array ALGORITMA DAN PEMROGRAMAN [IS ] Dosen: Yudha Saintika, S.T., M.T.I

*** SELAMAT MENGERJAKAN

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

Transkripsi:

Sorting (Pengurutan) A. Definisi Pengurutan Pengurutan adalah proses mengatur sekumpulan objek menurut urutan atau susunan tertentu. Urutan Objek tersebut dapat menaik (Ascending) atau menurun (Descending). Halaman 1

Data yang telah diurutkan memiliki banyak Keuntungan antara lain : 1. Mempercepat proses pencarian 2. Dapat dengan mudah ditentukan maksimum dan minimumnya Adanya kebutuhan terhadap proses pengurutan memunculkan bermacammacam metode pengurutan yang bertujuan untuk mendapatkan metode pengurutan yang optimal. Halaman 2

Algoritma pengurutan yang dikenal secara luas antara lain : 1. Maximum/Minimum Sort 2. Insertion Sort (Pengurutan Sisip) 3. Bubble Sort (Pengurutan Gelembung) 4. Heap Sort 5. Shell Sort 6. Quick Sort 7. Merge Sort 8. Radix Sort 9. Tree Sort Halaman 3

Pada Kuliah ini hanya akan dibahas tiga metode pengurutan saja, yaitu : 1. Pengurutan Gelembung (Bubble Sort) 2. Pengurutan Maksimum/Minimum (Maximum/Minimum Sort) 3. Pengurutan Sisip (Insertion Sort) Untuk semua algoritma pengurutan yang akan dibicarakan kemudian menggunakan tipe Array (Larik), yang didefinisikan sebagai berikut : {Deklarasi} Const NMaks = 100 {Jumlah Maksimum elemen Array} Type LarikInt = array[1...nmaks] of integer Halaman 4

B. Pengurutan Gelembung (Bubble Sort) Pengurutan gelembung diinspirasi oleh gelembung sabun yang berada di atas permukaan air. Karena berat jenis sabun lebih ringan daripada berat jenis air, maka gelembung sabun akan selalu terapung di atas pemukaan. Prinsip pengapungan digunakan pada pengurutan gelembung. Elemen Array yang berharga paling kecil diapungkan, artinya diangkat ke atas (atau ke ujung kiri Array) melalui proses pertukaran, jika akan dilakukan pengurutan membesar, jika pengurutan mengecil sebaliknya. Halaman 5

Proses pengapungan ini dilakukan sebanyak N kali langkah. Pada akhir setiap langkah ke- I, Array L[1..N] akan terdiri dari dua bagian, yaitu bagian yang sudah terurut, yaitu L[1..i] dan bagian yang belum terurut, yaitu L[i+1..N]. Setelah langkah terakhir, diperoleh Array L[1..N] yang terurut menaik Halaman 6

Algoritma Pengurutan Gelembung Untuk mendapatkan array yang terurut menaik, Proses yang dilakukan pada setiap langkah adalah sebagai berikut : Langkah 1 : Mulai dari 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. Halaman 7

Langkah 2 : Mulai dari 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 ke dua dan larik L[1..2] terurut Langkah 3 : Mulai dari elemen k = N, N-1,, 4, bandingkan L[k] dengan L[k-1]. Jika L[k] < L[k-1], pertukarkan L[k] dengan L[k-1]. Pada akhir langkah 3, elemen L[3] berisi harga minimum ke dua dan larik L[1..3] terurut... Halaman 8

Langkah N-1 : Mulai dari elemen k = N, bandingkan L[k] dengan L[k-1]. Jika L[k] < L[k-1], pertukarkan L[k] dengan L[k-1]. Contoh : Pada akhir langkah N-1, elemen L[N-1] berisi harga minimum ke N-1 dan larik L[1..N-1] terurut menaik (elemen yang tersisa adalah L[N], tidak perlu diurut karena hanya satu-satunya) Diketahui sebuah Array dengan N = 6 buah elemen yang belum Terurut, Array ini akan diurutkan menaik. Elemen Array tersebut Adalah 25, 27, 10, 8, 76, 21 Halaman 9

Algoritmanya adalah sebagai berikut : Procedure BubleSort(Input/output L : LarikInt, Input N : Integer) { K. Awal : Elemen Array L Telah terdefinisi K. Akhir : Elemen Larik L terurut menaik sedemikian hingga L[1] L[2] L[N] Proses : Mengurutkan elemen array L sehingga terurut menaik dengan metode Urut Gelembung} {Deklarasi} i : integer {Pencacah untuk jumlah langkah} k : integer {Pencacah untuk pengapungan pd tiap Temp : integer langkah} {Peubah bantu untuk pertukaran} Halaman 10

{Deskripsi} For i 1 to N-1 do for k N to 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 endif endfor endfor Halaman 11

Untuk memperoleh sebuah array yang terurut menurun dilakukan langkah sebaliknya. Jika diperhatikan pengurutan dengan metode Buble Sort adalah pengurutan yang tidak efisien untuk Array yang mempunyai ukuran yang besar, karena banyaknya operasi pertukaran yang dilakukan pada setiap langkah. Tetapi metode ini sederhana dan mudah dipahami. Halaman 12

C. Pengurutan Maksimum/Minimum Metode pengurutan ini disebut pengurutan Maksimum/minimum karena didasarkan pada pemilihan elemen maksimum/minimum sebagai basis pengurutan. Gagasannya adalah memilih elemen maksimum/minimum kemudian pertukarkan elemen tersebut dengan elemen terujung Array (Elemen ujung kiri atau ujung kanan). Selanjutnya dengan cara yang sama diulang untuk elemen larik yang tersisa dengan tidak lagi menyertakan elemen Array yang telah terurut. Halaman 13

1. Algoritma Pengurutan Maksimum Misalkan elemen Array akan diurut menaik : Langkah 1 : Tentukan harga maksimum di dalam L[1..N] Pertukarkan harga maksimum dengan L[N] Langkah 2 : Tentukan harga maksimum di dalam L[1..N-1] Pertukarkan harga maksimum dengan L[N-1] Langkah 3 : Tentukan harga maksimum di dalam L[1..N-2] Pertukarkan harga maksimum dengan L[N-2].. Langkah N-1 : Tentukan harga maksimum di dalam L[1..2] Pertukarkan harga maksimum dengan L[2] Halaman 14

Elemen tersisa adalah L[1] tidak perlu diurutkan karena merupakan elemen terakhir. Jadi pada setiap langkah pengurutan terdapat proses mencari harga maksimum dam proses pertukaran dua buah elemen array. Jumlah langkah pengurutan adalah N-1. Contoh Diketahui sebuah Array dengan N = 6 buah elemen yang belum Terurut, Array ini akan diurutkan menaik. Elemen Array tersebut Adalah 25, 27, 10, 8, 76, 21 Halaman 15

Algortimanya adalah sebagai berikut : Procedure Urutmaksimum(Input/output L : LarikInt, Input N : Integer) { K. Awal : Elemen Array L Telah terdefinisi K. Akhir : Elemen Larik L terurut menaik sedemikian hingga L[1] L[2] L[N] Proses : Mengurutkan elemen array L sehingga terurut menaik dengan metode Urut Maksimum} {Deklarasi} i : integer {Pencacah untuk jumlah langkah} j : integer {Pencacah untuk mencari nilai maksimum} Temp : integer {Peubah bantu untuk pertukaran} u : integer {Indeks ujung kanan array yang telah terurut} imaks : integer {Indeks elemen array maksimum sementara} maks : integer {Elemen array maksimum sementara} Halaman 16

{Deskripsi} u N For i 1 to N-1 do Maks L[1] imaks 1 for j 2 to u do if L[j] > Maks then Maks L[j] imaks j endif endfor {Pertukarkan L[u] dengan L[iMaks] } Temp L[u] L[u] L[iMaks] L[imaks] Temp endfor Halaman 17

Untuk terurut menurun adalah kebalikannya, yaitu mempertukarkan elemen yang maksimum dengan elemen array sebelah kiri yang belum terurut. 2. Algoritma Pengurutan Minimum Misalkan elemen Array akan diurut menurun : Langkah 1 : Tentukan harga minumum di dalam L[1..N] Pertukarkan harga minumum dengan L[N] Langkah 2 : Tentukan harga minumum di dalam L[1..N-1] Pertukarkan harga minumum dengan L[N-1] Langkah 3 : Tentukan harga minumum di dalam L[1..N-2] Pertukarkan harga minumum dengan L[N-2] Halaman 18

... Langkah N-1 : Tentukan harga minumum di dalam L[1..2] Pertukarkan harga minumum dengan L[2] Elemen yang tersisa adalah L[1], tidak perlu diurut karena hanya satu-satunya Untuk pengurutan menaik adalah kebalikannya, yaitu mempertukarkan elemen yang minimum dengan elemen yang sebelah kiri pada array yang belum terurut Halaman 19

Algortimanya adalah sebagai berikut : Procedure UrutMinimum(Input/output L : LarikInt, Input N : Integer) {K. Awal : Elemen Array L Telah terdefinisi K. Akhir : Elemen Larik L terurut menurun sedemikian Proses hingga L[1] L[2] L[N] : Mengurutkan elemen array L sehingga terurut menurun dengan metode Urut Minimum} {Deklarasi} i : integer {Pencacah untuk jumlah langkah} j : integer {Pencacah untuk mencari nilai minimum} Temp : integer {Peubah bantu untuk pertukaran} u : integer {Indeks ujung kanan array yang telah terurut} imin : integer {Indeks elemen array minimum sementara} Min : integer {Elemen array minimum sementara} Halaman 20

{Deskripsi} u N For i 1 to N-1 do Min L[1] imin 1 for j 2 to u do if L[j] > Min then Min L[j] imin j endif endfor {Pertukarkan L[u] dengan L[iMin] } Temp L[u] L[u] L[iMin] L[iMin] Temp endfor Halaman 21

D. Pengurutan Sisip (Insertion Sort) Pengurutan sisip adalah metode pengurutan dengan cara menyisipkan elemen array pada posisi yang tepat. Pencarian posisi pada yang tepat dimulai pada elemen kedua, dengan pemisalan bahwa elemen pertama sudah pada tempatnya. Selama pencarian posisi yang tepat dilakukan pergeseran elemen array. Halaman 22

Algoritma Pengurutan Sisip Menaik Andaian Langkah 2 Langkah 3 : L[1] sudah pada tempatnya : L[2] harus dicari tempatnya pada L[1..2] dengan cara menggeser elemen L[1..1] ke kanan bila L[1..1] lebih besar dari L[2]. Misalkan posisi yang tepat adalah k, maka sisipkan L[2] pada L[k] : L[3] harus dicari tempatnya pada L[1..3] dengan cara menggeser elemen L[1..2] ke kanan bila L[1..2] lebih besar dari L[3]. Misalkan posisi yang tepat adalah k, maka sisipkan L[3] pada L[k] Halaman 23

Langkah 4... Langkah N : L[4] harus dicari tempatnya pada L[1..4] dengan cara menggeser elemen L[1..3] ke kanan bila L[1..3] lebih besar dari L[4]. Misalkan posisi yang tepat adalah k, maka sisipkan L[4] pada L[k] : L[N] harus dicari tempatnya pada L[1..N] dengan cara menggeser elemen L[1..N-1] ke kanan bila L[1..N-1] lebih besar dari L[N]. Misalkan posisi yang tepat adalah k, maka sisipkan L[N] pada L[k] Halaman 24

Contoh Diketahui sebuah Array dengan N = 6 buah elemen yang belum Terurut, Array ini akan diurutkan menaik. Elemen Array tersebut Adalah 25, 27, 10, 8, 76, 21 Kelemahan metode pengurutan sisip adalah pada banyaknya operasi pergeseran yang diperlukan dalam mencari posisi yang tepat pada elemen array. Halaman 25

Algortimanya adalah sebagai berikut : Procedure UrutSisip(Input/output L : LarikInt, Input N : Integer) { K. Awal : Elemen Array L Telah terdefinisi K. Akhir : Elemen Larik L terurut menaik sedemikian Proses hingga L[1] L[2] L[N] : Mengurutkan elemen array L sehingga terurut menaik dengan metode Urut Sisip} {Deklarasi} k : integer {Pencacah untuk jumlah langkah} j : integer {Pencacah untuk penelusuran array} Temp : integer {Peubah bantu agar L[k] tidak ditimpa selama pergeseran} Halaman 26

{Deskripsi} {Elemen L[1] dianggap telah terurut} For k 2 to N do Temp L[k] {ambil L[k] agar tidak ditimpa pergeseran} {Cari posisi yang tepat untuk L[k] di dalam L[1..k-1] sambil menggeser} while (Temp L[j]) and (j > 1) do L[j+1] L[j] j j-1 endwhile if Temp L[j] then L[j+1] Temp {Posisi yang tepat untuk L[k] ditemukan} else endif endfor L[j+1] L[j] L[j] Temp Halaman 27