STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

dokumen-dokumen yang mirip
Algoritma Bubble Sort dan Quick Sort

BAB 2 LANDASAN TEORI

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Algoritma Divide and Conquer (Bagian 2)

Algoritma Divide and Conquer. (Bagian 2)

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

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

STRATEGI DIVIDE AND CONQUER

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

TELAAH WAKTU EKSEKUSI PROGRAM TERHADAP KOMPLEKSITAS WAKTU ALGORITMA BRUTE FORCE DAN DIVIDE AND CONQUER DALAM PENYELESAIAN OPERASI LIST

ALGORITMA PENGURUTAN & PENCARIAN

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Perbandingan Algoritma Pengurutan Merge Sort, Quick Sort dan Heap Sort Dilihat dari Kompleksitasnya

Modul Praktikum 6 Pemograman Berorientasi Objek

Kemangkusan Algoritma Pada Beberapa Variasi Quick Sort

Gambar 13.1 Ilustrasi proses algoritma sorting

Kompleksitas Algoritma Sorting yang Populer Dipakai

BAB 8 SORTING DAN SEARCHING

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

Decrease and Conquer

7. SORTING DAN SEARCHING

Pengurutan (Sorting) Algoritma Pemrograman

BAB VI Pengurutan (Sorting)

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

Politeknik Elektronika Negeri Surabaya

Kompleksitas Algoritma

SEARCHING & SORTING. Pendahuluan

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 07

Bab Tujuan. 6.2 Insertion Sort

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Solusi UTS Stima. Alternatif 1 strategi:

SORTING. Brigida Arie Minartiningtyas, M.Kom

STRUKTUR DATA SORTING ARRAY

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-9 Pengurutan (Sorting) 2

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

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

Pengertian Algoritma Pengurutan

Analisis Kecepatan Sorting Dengan Notasi Big O

Outline STRUKTUR DATA. VII. Sorting

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

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

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

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

A. TUJUAN PEMBELAJARAN

SORTING (Pengurutan)

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

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

Kompleksitas Algoritma (1)

ALGORITMA DIVIDE AND CONQUER

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

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

BAB VII ALGORITMA DIVIDE AND CONQUER

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

ANALISIS PERBANDINGAN ALGORITMA BUBBLE SORT, MERGE SORT, DAN QUICK SORT DALAM PROSES PENGURUTAN KOMBINASI ANGKA DAN HURUF

Aplikasi Strategi Algoritma dalam Pembagian Kelompok Tugas Besar

STRUKTUR DATA (3) sorting array. M.Cs

MAKALAH ALGORITMA DIVIDE AND CONQUER

Kompleksitas Algoritma

Algoritma Divide and Conquer

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

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

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

PENGGUNAAN ALGORITMA DIVIDE AND CONQUER UNTUK OPTIMASI KONVERSI BILANGAN DESIMAL KE BINER

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Sorting. Quick Sort

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

PERTEMUAN 10 METODE DEVIDE AND CONQUER

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

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

Teknik Pengurutan Kartu Remi

Algoritma Divide and Conquer (Bagian 1)

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

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

MODUL IV PENCARIAN DAN PENGURUTAN

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

Analisis Perbandingan Kompleksitas Algoritma Pengurutan Nilai (Sorting)

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

Sorting Algorithms. Divide and Conquer

Sorting Algorithms. Definisi

Algoritma dan Struktur Data. Searching dan Sorting

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

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

Algoritma Brute Force

Pengurutan (Sorting)

STRUKTUR DASAR ALGORITMA DAN PEMROGRAMAN STMIK AMIKOM YOGYAKARTA

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

PERTEMUAN 10 METODE DEVIDE AND CONQUER

Design and Analysis of Algorithms CNH2G3- Week 4 Kompleksitas waktu algoritma rekursif part 1

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

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

Politeknik Elektronika Negeri Surabaya

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

Searching [pencarian] Algoritma Pemrograman

A. TUJUAN PEMBELAJARAN

Algoritma Divide and Conquer

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

ANALISIS ALGORITMA QUICKSORT

Transkripsi:

STRUKTUR DATA Nama : Sulfikar Npm : 2013020076 STMIK Handayani Makassar

Pengertian Quick Sort Algoritma sortir yang efisien yang ditulis oleh C.A.R. Hoare pada 1962. Dasar strateginya adalah memecah dan menguasai. Quicksort dimulai dengan menscan daftar yang disortir untuk nilai median. Nilai ini, yang disebut tumpuan (pivot), kemudian dipindahkan ke satu sisi pada daftar dan butir-butir yang nilainya lebih besar dari tumpuan di pindahkan ke sisi lain. Algoritma Quick Sort DIVIDE Memilah rangkaian data menjadi dua sub-rangkaian A[p q-1] dan A[q+1 r] dimana setiap elemen A[p q-1] adalah kurang dari atau sama dengan A[q] dan setiap elemen pada A[q+1 r] adalah lebih besar atau sama dengan elemen pada A[q]. A[q] disebut sebagai elemen pivot. Perhitungan pada elemen q merupakan salah satu bagian dari prosedur pemisahan. CONQUER Mengurutkan elemen pada sub-rangkaian secara rekursif Pada algoritma quick sort, langkah kombinasi tidak di lakukan karena telah terjadi pengurutan elemen elemen pada sub array.

Analisis Algoritma QuickSort Setiap elemen yang akan disort selalu diperlakukan secara sama di sini, diambil salah satu elemen, dibagi menjadi 3 list, lalu ketiga list tersebut disort dan digabung kembali. Contoh kode di atas menggunakan 3 buah list, yaitu yang lebih besar, sama dan lebih kecil nilainya dari pivot. Untuk membuat lebih efisien, bisa digunakan 2 buah list dengan mengeliminasi yang nilainya sama (bisa digabung ke salah satu dari 2 list yang lain). Kasus terburuk dari algoritma ini adalah saat dibagi menjadi 2 list, satu list hanya terdiri dari 1 elemen dan yang lain terdiri dari n-2 elemen. Untuk kasus terburuk dan kasus rata-rata, algoritma ini memiliki kompleksitas sebesar O(n log n). Jumlah ratarata perbandingan untuk quick sort berdasarkan permutasinya dengan asumsi bahwa nilai pivot diambil secara random adalah : Lalu bagaimana cara menentukan pivot sendiri? Kasus terbaik yang diharapkan diilustrasikan sebagai berikut: Bagi sebuah list menjadi 4 buah. Lalu pilih 2 buah list sedemikian rupa sehingga setiap elemennya lebih besar dari 25 % elemen terkecil dan lebih kecil dari 25% elemen terbesar. Bila nilai pivot yang dipilih secara konstan terambil dari nilai ini maka hanya diperlukan pembagian list sebanyak 2log2n kali.biladibandingkan dengan merge sort, quick sort memiliki keuntungan di kompleksitas waktu sebesar Θ(log n), dibanding dengan merge sort sebesar Θ(n). namun quick sort tidak mampu membandingkan linked list sebaik merge sort, karena ada kemungkinan pemilihan pivot yang buruk. Selain itu pada linked list merge sort memerlukan ruang yang lebih sedikit. Berdasarkan analisis tersebut quick sort termasuk algoritma sorting yang cukup baik, namun kita pun harus bisa memilih nilai pivot yang baik agar penggunaannya bisa optmal.

Pseudocode Quick Sort Procedure Partisi (input/output: a : array[1..n] of integer, input i, j : integer, output q : integer) Membagi tabel a[i..j] menjadi subtabel a[i..q] dan a[q+1..j]. Keluaran upatabel a[i..q] dan subtabel a[q+1..j]. Sedemikian sehingga elemen tabel a[i..q] lebih kecil dari elemen tabel a[q+1..j] Deklarasi : Pivot, temp : integer Algoritma : Pivot <- A[(i+j) div 2] pivot = elemen tengah p <- i q <- j repeat while a[p] < pivot do p <- p + 1 endwhile Ap >= pivot while a[q] > pivot do q <- q 1 endwhile Aq >= pivot if (p _ q) then pertukarkan a[p] dengan a[q] temp <- a[p] a[p] <- a[q] a[q] <- temp tentukan awal pemindaian berikutnya p <- p+ 1

q <- q 1 endif until p > q

Contoh Quick Sort

Kelebihan dan Kekurangan Algoritma Quick Sort Beberapa hal yang membuat quick sort unggul: Secara umum memiliki kompleksitas O(n log n). Algoritmanya sederhana dan mudah diterapkan pada berbagai bahasa pemrograman dan arsitektur mesin secara efisien. Dalam prakteknya adalah yang tercepat dari berbagai algoritma pengurutan dengan perbandingan, seperti merge sort dan heap sort. Melakukan proses langsung pada input (in-place) dengan sedikit tambahan memori. Bekerja dengan baik pada berbagai jenis input data (seperti angka dan karakter). Namun terdapat pula kekurangan quick sort: Sedikit kesalahan dalam penulisan program membuatnya bekerja tidak beraturan (hasilnya tidak benar atau tidak pernah selesai). Memiliki ketergantungan terhadap data yang dimasukkan, yang dalam kasus terburuk memiliki kompleksitas O(n2). Secara umum bersifat tidak stable, yaitu mengubah urutan input dalam hasil akhirnya (dalam hal inputnya bernilai sama). Pada penerapan secara rekursif (memanggil dirinya sendiri) bila terjadi kasus terburuk dapat menghabiskan stack dan memacetkan program. Implementasi Quic Sort Menggunakan C/C++

SHELL SORT Metode Shell (Shell Sort) Metode ini disebut juga dengan metode pertambahan menurun (diminishing increment). Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959, sehingga sering disebut dengan Metode Shell Sort. Metode ini mengurutkan data dengan cara membandingkan suatu data dengan data lain yang memiliki jarak tertentu, kemudian dilakukan penukaran bila diperlukan

Algoritma Shell Sort Banyak = N range = banyak / 2 while range <> 0 counter = 1 target = banyak-range while counter<=target kiri = counter selesai = false while selesai=false kanan = kiri+range if item (kiri)>= item (kanan) selesai = true else swap item (kiri) dan item (kanan) if kiri > range kiri = kiri - range else selesai = true end_if end_if end_while counter = counter + 1 end_while range = range / 2 end_while

Kelebihan dan Kekurangan Shell Sort - Kelebihan 1 Algoritma ini sangat rapat dan mudah untuk diimplementasikan. 2 Operasi pertukarannya hanya dilakukan sekali saja. 3 Waktu pengurutan dapat lebih ditekan. 4 Mudah menggabungkannya kembali. 5 Kompleksitas selection sort relatif lebih kecil. - Kekurangan 1 Membutuhkan method tambahan. 2 Sulit untuk membagi masalah. Contoh Program Contoh Program Kedua ( Mengurutkan Data Tipe Angka ) #include<stdio.h> #include<conio.h> int main() int arr[30]; int i,j,k,tmp,num; printf("masukan Banyaknya Elemen :"); scanf("%d", &num); for(k=0; k<num; k++) printf("\nmasukkan %d Nilai : ",k+1); scanf("%d",&arr[k]); for(i=num/2; i>0; i=i/2) for(j=i; j<num; j++) for(k=j-i; k>=0; k=k-i) if(arr[k+i]>=arr[k]) break; else tmp=arr[k];

arr[k]=arr[k+i]; arr[k+i]=tmp; printf("\n**** Hasil Shell Sort ****\n"); for(k=0; k<num; k++) printf("%d\t",arr[k]); getch(); return 0;