Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

dokumen-dokumen yang mirip
Gambar 13.1 Ilustrasi proses algoritma sorting

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

Modul 8 SORTING (PENGURUTAN)

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

Modul Praktikum Algoritma dan Struktur Data

SORTING (PENGURUTAN DATA)

Algoritma Sorting (Selection Insertion)

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

STRUKTUR DATA SORTING ARRAY

BAB 2 SORTING (PENGURUTAN)

BAB VI Pengurutan (Sorting)

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

BAB VI SORTIR ATAU PENGURUTAN

# TEN Sorting PENDAHULUAN

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

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

ALGORITMA PENGURUTAN & PENCARIAN

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

Bab Tujuan. 6.2 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.

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

Algoritma dan Struktur Data. Searching dan Sorting

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

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

Sorting. Pertemuan ke 14.

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

Pengurutan (Sorting) Algoritma Pemrograman

Algoritma dan Struktur Data

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

SORTING (Pengurutan)

Bubble Sort dan Shell-Sort. Yuliana Setiowati

Algoritma Bubble Sort dan Quick Sort

Sorting Algorithms. Divide and Conquer

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

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

SEARCHING & SORTING. Pendahuluan

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

Sorting Algorithms. Buble Sort

Kompleksitas Algoritma Dalam Algoritma Pengurutan

Analisis Kecepatan Sorting Dengan Notasi Big O

PENGURUTAN (SORTING) 1. Overview

Powered by icomit.wordpress.com

Outline STRUKTUR DATA. VII. Sorting

STRUKTUR DATA (3) sorting array. M.Cs

PERTEMUAN 10 METODE DEVIDE AND CONQUER

Sorting Algorithms. Definisi

BAB I PENDAHULUAN.

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

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Algoritma dan Struktur Data. Performansi Algoritma

Kompleksitas Algoritma Sorting yang Populer Dipakai

A. TUJUAN PEMBELAJARAN

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

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

METODE DEVIDE AND CONQUER

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

Algoritme dan Pemrograman

PERTEMUAN 10 METODE DEVIDE AND CONQUER

Politeknik Elektronika Negeri Surabaya

Pengertian Algoritma Pengurutan

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

ANALISIS ALGORITMA INSERTION SORT, MERGE SORT DAN IMPLEMENTASINYA DALAM BAHASA PEMROGRAMAN C++

A. TUJUAN PEMBELAJARAN

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Prpsedur progaram selectioa sort (Dengan program C++)

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

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

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

Materi 4: SORTING (PENGURUTAN) Dosen:

BAB V SORTING (PENGURUTAN) INTERNAL

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Sorting. Selection Sort. Straight insertion Sort. Merge Sort Paradigma Divide-and-Conquer. Quicksort

BAB 2 TINJAUAN PUSTAKA

Kompleksitas Algoritma

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

Modul Praktikum 6 Pemograman Berorientasi Objek

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

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

1. Algoritma Searching

Kompleksitas Algoritma dalam Strategi Algoritma Sorting

Pengurutan (Sorting)

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

Algoritma Heap Sort. Sekolah Teknik Elektro & Informatika Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung

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

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

MODUL IV PENCARIAN DAN PENGURUTAN

Kompleksitas Algoritma (1)

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

Politeknik Elektronika Negeri Surabaya

Bubble Sort dan Selection Sort di Java Console

BAB 3 ANALISA SISTEM

Objectives. Struktur Data & Algoritme (Data Structures & Algorithms) Sort. Outline. Bubble Sort: idea. Bubble Sort. Sorting

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

Algoritma dan Struktur Data STACK

Agar lebih mudah mengerti, cobalah untuk melakukan hal-hal berikut ini: 1. Bacalah terlebih dahulu ide dasar dari masing-masing algoritma.

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA BUBBLE SORT, SELECTION SORT, INSERTION SORT

Metode Insertion Sort di Java Console

ALGORITMA PEMOGRAMAN SEMESTER GENAP 2017/2018

Menghitung Inversion Pada Barisan Dengan Menggunakan Modifikasi Bubble Sort, Insertion Sort, dan Merge Sort

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Transkripsi:

Algoritma dan Struktur Data Algoritma Pengurutan (Sorting)

Tujuan Instruksional Memahami algoritma pengurutan Mengerti algoritma bubble, selection, insertion, merge sort

Topik Algoritma pengurutan Bubble sort Selection sort Insertion sort merge sort

Sorting (Pengurutan) Sorting merupakan suatu proses (operasi) yang mengurutkan data dalam suatu urutan yang dikehendaki. Pengurutan dapat dilakukan secara ascending (urut naik) maupun descending (urut turun).

Contoh : Misal suatu kumpulan DATA berisi 8 elemen : DATA : 77, 33, 44, 11, 88, 22, 66, 55 Setelah diurutkan : Ascending : 11 22 33 44 55 66 77 88 Descending : 88 77 66 55 44 33 22 11

Algoritma Pengurutan Ada banyak metode yang digunakan untuk melakukan pengurutan. Algoritma yang dapat digunakan antara lain : 1. Bubble Sort 2. Selection Sort 3. Insertion Sort 4. Merge Sort

Bubble Sort Metode sorting termudah Cara pengurutannya : bandingkan dua data kemudian swap. Diberi nama Bubble karena proses pengurutan secara berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung.

Bubble Sort Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. Ascending : Jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar/swap. Descending : Jika elemen sekarang lebih kecil dari elemen Descending : Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar/swap.

Ilustrasi Bubble Sort (1)

Ilustrasi Bubble Sort (2)

Ilustrasi Bubble Sort (3)

Ilustrasi Bubble Sort (4)

Algoritma Bubble Sort (tanpa flag) for (i=0; i < n-1; i++){ for (j=n-1; j > i; j--) { if (X[j] < X[j-1]) { tmp = X[j]; X[j] = X[j-1]; X[j-1] = tmp; } } } SWAP

Time Complexity (Bubble) Proses swap worst case : T(n) = n(n-1)/2 = (n 2 n) /2 = O(n 2 ) best case : T(n) = 0 Proses perbandingan worst case : T(n) = n(n-1)/2 = (n 2 n) /2 = O(n 2 ) best case : T(n) = n(n-1)/2 = (n 2 n) /2 = O(n 2 )

Algoritma Bubble Sort (dengan flag) Flag for (i=0; i < n-1 && status; i++){ status = false; for (j=n-1; j > i; j--) { if (X[j] < X[j-1]) { tmp = X[j]; X[j] = X[j-1]; X[j-1] = tmp; status = true; } } } SWAP

Time Complexity (Bubble) Proses swap worst case : T(n) = n(n-1)/2 = (n 2 n) /2 = O(n 2 ) best case : T(n) = 0 Proses perbandingan worst case : T(n) = n(n-1)/2 = (n 2 n) /2 = O(n 2 ) best case : T(n) = n-1 = O(n)

Latihan Urutkan data berikut dengan bubble sort : 2, 10, 3, 1, 17, 25, 16, 9, 18 Buatlah ilustrasi proses pengurutannya secara ascending maupun descending!

Selection Sort Cara pengurutannya : seleksi data yang ada kemudian dilakukan swap (pertukaran posisi). Pada Ascending : seleksi data terkecil kemudian swap. Pada descending : seleksi data terbesar kemudian swap.

Ilustrasi Selection Sort (1)

Ilustrasi Selection Sort (2)

Ilustrasi Selection Sort (3)

Ilustrasi Selection Sort (4)

Algoritma Selection Sort (Ascending) 1. Tampung data ke-i 2. Seleksi data terkecil 3. Cek apakah data yang ditampung lebih besar dari data hasil seleksi (data terkecil). 4. Jika pengecekan langkah 3 bernilai true : lakukan pertukaran posisi antara data yang ditampung dengan data terkecil. 5. Ulangi langkah 1 sampai 4, hingga nilai i sama dengan n.

Selection Sort (Ascending) Misalkan sekumpulan data disimpan pada A[8] dengan urutan awal = 7 3 4 1 8 2 6 5 M = data terkecil sementara, K = data terkecil (hasil seleksi) Proses Swap A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] Data awal 7 3 4 1 8 2 6 5 1 m=a[0], k = 1 7 3 4 1 8 2 6 5 1 2 m=a[1], k = 2 1 3 4 7 8 2 6 5 3 M=A[2], k = 3 1 2 4 7 8 3 6 5 4 m=a[3], k = 4 1 2 3 7 8 4 6 5 5 m=a[4], k = 5 1 2 3 4 8 7 6 5 Hasil : 1 2 3 4 5 6 7 8 (data telah terurut secara ascending) 6 m=a[5], k = 6 1 2 3 4 5 7 6 8 7 m=a[6], k = 7 1 2 3 4 5 6 7 8 2 3 4 6 7 5

Pseudocode Selection Sort (ascending) for (i=0; i < n-1; i++) { min = i; for (j = i+1; j < n; j++) { if (X[min] > X[j]) min = j; Cari elemen terkecil dari unsorted list. } } t = X[min]; X[min] = X[i]; X[i] = t; } SWAP

Time Complexity (Selection) Proses swap worst case : T(n) = n = O(n) best case : T(n) = n = O(n) Proses perbandingan worst case : T(n) = n(n-1)/2 = (n 2 n) /2 = O(n 2 ) best case : T(n) = n(n-1)/2 = (n 2 n) /2 = O(n 2 )

Effisiensi Selection Sort for (i=0; i < n-1; i++) { min = i; for (j = i+1; j < n; j++) { if (X[min] > X[j]) min = j; } } if (min!= i) { t = X[min]; X[min] = X[i]; X[i] = t; } Pengecekkan min untuk memaksimalkan proses swap

Time Complexity (Selection) Proses swap worst case : T(n) = n/2 = O(n) best case : T(n) = 0

Latihan Urutkan data berikut dengan selection sort : 2, 10, 3, 1, 17, 25, 16, 9, 18 Buatlah ilustrasi proses pengurutannya secara ascending maupun descending!

Insertion Sort Cara pengurutannya : dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan ditempatkan (diinsert) diposisi yang seharusnya. Ascending : ketika perbandingan ambil data yang paling kecil. Descending : ketika perbandingan ambil data yang paling Descending : ketika perbandingan ambil data yang paling besar.

Algoritma Insertion Sort (Ascending) 1. Ambil satu data ke-i simpan di temp 2. Bandingkan data temp dengan data yang ada disebelah kiri satu per-satu 3. Cek apakah data temp lebih kecil dari data sebelah kiri. 4. Jika langkah nomor 3 bernilai true : lakukan pergeseran data satu-persatu kemudian pada posisi yang tepat sisipkan data temp. 5. Ulangi langkah 1 sampai 4, hingga i sama dengan n

Insertion Sort (Ascending) Misalkan sekumpulan data disimpan pada A[8] dengan urutan awal = 7 3 4 1 8 2 6 5 temp = variabel penampung Proses Tampung A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] Data awal 7 3 4 1 8 2 6 5 1 temp = A[1] 3 7 4 1 8 2 6 5 2 temp = A[2] 3 4 7 1 8 2 6 5 3 temp = A[3] 1 3 4 7 8 2 6 5 4 temp = A[4] 1 3 4 7 8 2 6 5 5 temp = A[5] 1 2 3 4 7 8 6 5 Hasil : 1 2 3 4 5 6 7 8 (data telah terurut secara ascending) 6 temp = A[6] 1 2 3 4 6 7 8 5 7 temp = A[7] 1 2 3 4 5 6 7 8

Ilustrasi Insertion Sort (1)

Ilustrasi Insertion Sort (2)

Ilustrasi Insertion Sort (3)

Ambil data pertama Algoritma Insertion Sort for(i=1;i<n;i++){ t=x[i]; for (j =i-1; j >= 0; j--) { if (t < X[j]){ X[j+1] = X[j]; } } } } else { X[j]=t; X[j+1] = t; break; Pergeseran data

Time Complexity Proses pergeseran (copy) worst case : T(n) = n(n-1)/2 = (n 2 n) /2 = O(n 2 ) best case : T(n) = 0 Proses perbandingan worst case : T(n) = n(n-1)/2 = (n 2 n) /2 = O(n 2 ) best case : T(n) = n-1 = O(n)

Latihan Urutkan data berikut dengan insertion sort : 2, 10, 3, 1, 17, 25, 16, 9, 18 Buatlah ilustrasi proses pengurutannya secara ascending maupun descending!

Merge Sort Cara pengurutannya : memecah proses menjadi sub-proses. Bagi dua deret data, bandingkan, kemudian gabungkan (begitu seterusnya sampai selesai). Teknik pemecahan proses menggunakan rekursif.

Merge Sort (Merging) Permasalahan utama dipecah menjadi sub-masalah, kemudian solusi dari sub-masalah akan membimbing menuju solusi permasalahan utama. Mengimplementasikan konsep rekursi. 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 terurut sesuai rangkaian.

Contoh : Merge Sort Array A berisi 6 elemen sbb : 15 12 45 56 13 10 Masing-masing proses dalam algoritma merge sort akan dimulai dari elemen awal dalam A dan menggabungkan (merge) pasangan subarray yang terurut.

Ilustrasi Merge Sort (1)

Ilustrasi Merge Sort (2)

Ilustrasi Merge Sort (2)

Ilustrasi Merge Sort (2)

Ilustrasi Merge Sort (2)

Ilustrasi Merge Sort (3)

Ilustrasi Merge Sort (3)

Ilustrasi Merge Sort (3)

Algoritma Merge Sort static void mergesort(int l,int r) { } if(l==r) return; else{ int mid = (l+r)/2; mergesort(l, mid); mergesort(mid+1,r); Merging(l,mid+1,r); }

Algoritma Merging static void Merging(int kiri,int tengah, int kanan) { int j=0; int batasbawah = kiri; int mid = tengah-1; int n=kanan-batasbawah+1; int tampung[] = new int[x.length]; while(kiri <=mid && tengah <= kanan){ if(x[kiri] < X[tengah]) tampung[j++]=x[kiri++]; else tampung[j++]=x[tengah++]; } while(kiri<=mid) tampung[j++]=x[kiri++]; while(tengah<=kanan) tampung[j++]=x[tengah++]; } for(int i=0;i<n;i++) { X[batasBawah+i]=tampung[i]; }

Latihan Urutkan data berikut dengan merge sort : 2, 10, 3, 1, 17, 25, 16, 9, 18 Buatlah ilustrasi proses pengurutannya secara ascending maupun descending!

Pustaka Sartaj Sahni, Data Structures & Algorithms, Presentation L20-24. Mitchell Waite, Data Structures & Algorithms in Java, SAMS, 2001