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

dokumen-dokumen yang mirip
Algoritme dan Pemrograman

Algoritme dan Pemrograman

Penger6an struct. Algoritme dan Pemrograman. Cara membuat struct. Deklarasi struct. Pointer pada struct 12/10/14 ILKOM IPB 1

Algoritme dan Pemrograman

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

Gambar 13.1 Ilustrasi proses algoritma sorting

ANALISIS ALGORITMA BINARY SEARCH

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

ALGORITMA PENGURUTAN & PENCARIAN

PENGURUTAN (SORTING) 1. Overview

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Sorting. Quick Sort

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

BAB VI Pengurutan (Sorting)

Modul 8 SORTING (PENGURUTAN)

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

PENCARIAN (SEARCHING)

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

SORTING. Brigida Arie Minartiningtyas, M.Kom

STRUKTUR DATA SORTING ARRAY

Kompleksitas Algoritma Sorting yang Populer Dipakai

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Modul Praktikum Algoritma dan Struktur Data

SORTING (PENGURUTAN DATA)

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

SORTING (Pengurutan)

STRUKTUR DATA (3) sorting array. M.Cs

A. TUJUAN PEMBELAJARAN

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

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

Sorting. Pertemuan ke 14.

Modul Praktikum Algoritma dan Struktur Data

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

BAB 3 SEARCHING A. TUJUAN

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

BAB 8 SORTING DAN SEARCHING

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

Algoritma Bubble Sort dan Quick Sort

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

Algoritma dan Struktur Data. Searching dan Sorting

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

7. SORTING DAN SEARCHING

Modul Praktikum 6 Pemograman Berorientasi Objek

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

# TEN Sorting PENDAHULUAN

MODUL IV PENCARIAN DAN PENGURUTAN

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

Politeknik Elektronika Negeri Surabaya

Outline STRUKTUR DATA. VII. Sorting

Algoritma dan Struktur Data

A. TUJUAN PEMBELAJARAN

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

ANALISIS KOMPLEKSITAS ALGORITMA UNTUK BERBAGAI MACAM METODE PENCARIAN NILAI (SEARCHING) DAN PENGURUTAN NILAI (SORTING) PADA TABEL

BAB V SORTING (PENGURUTAN) INTERNAL

Bab Tujuan. 6.2 Insertion Sort

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

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

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

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Fungsi. Fungsi. y = f (x) = x m = jumlah ( a, b ) = a + b

Algoritma dan Struktur Data

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

BAB VI SORTIR ATAU PENGURUTAN

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Algoritma dan Pemrograman Searching/Pencarian

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

Decrease and Conquer

SORTING (BAGIAN II) Proses kelima

Politeknik Elektronika Negeri Surabaya

1. Algoritma Searching

Algoritma dan Pemrograman 2 PENGURUTAN

BAB 2 SORTING (PENGURUTAN)

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Kompleksitas Algoritma (1)

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

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

Praktikum 9. Pengurutan (Sorting) Quick Sort, Merge Sort

Pengurutan (Sorting) Algoritma Pemrograman

STRATEGI DIVIDE AND CONQUER

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

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

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

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

Kompleksitas Algoritma

Powered by icomit.wordpress.com

Pengertian Algoritma Pengurutan

A. TUJUAN PEMBELAJARAN

UJIAN AKHIR SEMESTER GANJIL 2008/2009 ALGORITME DAN PEMROGRAMAN Sabtu, 31 Januari 2009; Pukul 13:30 16:00; CATATAN TERTUTUP

Sorting Algorithms. Divide and Conquer

a[0] a[1] a[2] a[3] a[4] a[5] x

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

SEARCHING & SORTING. Pendahuluan

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

Materi Praktikum Algoritma dan Pemrograman II Sorting Algorithm (Algoritma Pengurutan)

Algoritma dan Struktur Data. Linear & Binary Search Tree

MAKALAH STRUKTUR DATA HEAP SORT. Disusun Oleh :

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

SORTING ALGORITMA. Bubble Sort JANUARY 14, 2016

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

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-7 Pencarian (Searching) 2

Transkripsi:

Algoritme dan Pemrograman Kuliah #12 Sorting Searching Sorting Mengurutkan data berdasarkan kunci tertentu. Jenis sorting: Ascending (menaik) Descending (menurun) Manfaat : mempercepat dan memudahkan akses data Banyak algoritme sorting dikembangkan Mempercepat proses Efisiensi penggunaan sumberdaya Contoh Masukan (input): 5 2 4 6 1 3 Keluaran (output): 1 2 3 4 5 6 (ascending) 6 5 4 3 2 1 (descending) Data untuk sorting Anggaplah kita mempunya array data yang terdiri dari beberapa kolom, salah satunya adalah key dengan tipe int sbb: struct list int key; int val; // contoh elemen lainnya... // dan seterusnya ; typedef struct list LIST; Akan dilakukan sorting berdasarkan nilai key secara ascending. Fungsi pendukung Menukar record t1 dan t2: void tukar(list *t1, LIST *t2) LIST t=*t1; *t1=*t2; *t2=t; Menampilkan n record data void printlist(list t[], int n) int i; for (i=0; i<n; i++) printf("%d %d\n", t[i].key, t[i].val); Algoritme #1: BUBBLE SORT Baca elemen array dari kiri ke kanan, bandingkan nilai key yang bersebelahan. Jika dua nilai posisinya tidak sesuai, tukar tempatnya. Ulangi prosedur ini sampai semua elemen terurut. Cepat jika data masukan sudah terurut Secara umum membutuhkan waktu proses lebih lama ILKOM IPB 1

Algoritme #1: BUBBLE SORT void bubblesort(list x[], int n) int i,j; for(i=0;i<n-1;i++) for(j=0;j<n-(i+1);j++) if (x[j].key > x[j+1].key) tukar(&x[j],&x[j+1]); Algoritme #2: SELECTION SORT Memilih nilai terkecil dari key dalam array dan tempat record pada posisi yang sesuai berdasarkan nilai key. Kurang efisien untuk data berukuran besar Algoritme #2: SELECTION SORT void selectionsort(list t[], int n) int min; for (i=0; i<n; i++) min = i; for (j=i+1; j<n; j++) if (t[j].key < t[min].key) min = j; tukar(&t[i], &t[min]); Algoritme #3: INSERTION SORT Baca elemen dalam array dari kiri ke kanan, dan tempatkan pada posisi yang sesuai berdasarkan nilai key. Kurang efisien untuk data berukuran besar Algoritme #3: INSERTION SORT void insertionsort(list t[], int n) LIST index; for (i=1; i<n; i++) index = t[i]; j = i; while ((j>0) && (t[j-1].key>index.key)) t[j] = t[j-1]; j = j-1; t[j] = index; ILKOM IPB 2

void mergesort(list t[], int n) ms(t, 0, n-1); void ms(list t[], int left, int right) int mid; if (left<right) mid=(left+right)/2; ms(t, left, mid); ms(t, mid+1, right); merge(t, left, right, mid); merge(list t[], int left, int right, int mid) LIST c[size]; int i=left, j=mid+1, k=left; while ((i<=mid)&&(j<=right)) if(t[i].key<t[j].key) c[k]=t[i]; k++; i++; else c[k]=t[j]; k++; j++; while (i<=mid) c[k]=t[i]; k++; i++; while (j<=right) c[k]=t[j]; k++; j++; for(i=left;i<k;i++) t[i]=c[i]; (animation) Menerapkan strategi divide and conquer untuk membagi list menjadi dua sublist Tahapan Ambil elemen, disebut pivot, dari list Posisikan pivot sehingga elemen sebelah kiri lebih kecil dari pivot, dan elemen sebelah kanan lebih besar dari pivot Lakukan hal yang sama untuk sublist sebelah kiri dan kanan pivot secara rekursif. void quicksort(list t[], int n) qs(t, 0, n-1); void qs(list t[], int left, int right) LIST x, y; i = left; j = right; x = t[(left+right)/2]; do while((t[i].key<x.key) && (i<right)) i++; while((x.key<t[j].key) && (j>left)) j--; if(i <= j) tukar(&t[i], &t[j]); i++; j--; while(i<=j); if (left<j) qs(t, left, j); if (i<right) qs(t, i, right); ILKOM IPB 3

Searching Mencari data berdasarkan key tertentu. Kelompok Algoritme: Sequential search Sorted array search Hashing Recursive structures search Multidimensional search Yang dibahas pada matakuliah ini adalah sequential search dan sorted array search. Sequential search Setiap elemen dalam array ditelusuri satu per satu dari arah kiri hingga ketemu atau data yang dibaca telah habis. Mudah diimplementasikan. Waktu proses relatif lambat untuk ukuran data sangat besar. Sequential search // Output : indeks letak data pertama ditemukan // atau bernilai -1 jika tidak ditemukan int sequentialsearch(list t[], int n, int val) int i; for(i=0; i<n; i++) if(val==t[i].key) return i; return -1; /* no match */ Sequential sorted array search Data harus terurut Setiap elemen dalam array ditelusuri satu per satu dari arah kiri hingga ketemu atau key data yang dibaca lebih besar dari nilai yang dicari atau data telah habis. Mudah diimplementasikan. Waktu proses relatif cepat untuk kasus data yang dicari terletak di bagian depan. Sequential sorted array search // Output : indeks letak data pertama ditemukan // atau bernilai -1 jika tidak ditemukan int sortedsearch(list t[], int n, int val) int i=0, hsl=-1; while ((t[i].key<=val) && (i<n) && (hsl==-1)) if(t[i].key==val) hsl=i; i++; return hsl; /* no match */ Binary search Data harus terurut. Langsung dilihat data yang terletak di tengah (misalnya data ke-mid). Jika key data ke-mid lebih besar dari yang dicari, maka pencarian diarahkan ke daerah sebelah kiri dari mid. Sebaliknya, diarahkan ke sebelah kanan. ILKOM IPB 4

Binary search int binarysearch(list t[], int n, int val) int left, right, mid; left = 0; right = n-1; while(left<=right) mid=(left+right)/2; if (val<t[mid].key) right=mid-1; else if (val>t[mid].key) left=mid+1; else return mid; /* found */ return -1; /* not found */ ILKOM IPB 5