Analisis Algoritma. Jimmy Tirtawangsa. Universitas Telkom 2014

dokumen-dokumen yang mirip
Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

Pengertian Algoritma Pengurutan

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Pendahuluan. Ukuran input (input s size)

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

Kompleksitas Algoritma

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Pengkajian Algoritma Pengurutan-Tanpa-Pembandingan Counting Sort dan Radix Sort

Analisis Kecepatan Sorting Dengan Notasi Big O

Matematika Diskrit Kompleksitas Algoritma. Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

STRATEGI DIVIDE AND CONQUER

Kompleksitas Algoritma Dalam Algoritma Pengurutan

Algoritma Bubble Sort dan Quick Sort

Kompleksitas Algoritma

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

Pengurutan (Sorting) Algoritma Pemrograman

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

BAB 2 LANDASAN TEORI

Kompleksitas Algoritma (1)

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

Array (Tabel) bagian 2

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

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

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

METODE DEVIDE AND CONQUER (DANDC)

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

SORTING (PENGURUTAN DATA)

Kompleksitas Algoritma

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

Algoritma Divide and Conquer (Bagian 2)

Kompleksitas Algoritma

Decrease and Conquer

BAB 2 TINJAUAN PUSTAKA

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

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

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

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 1: 9 Mei 2016

ALGORITMA PENGURUTAN & PENCARIAN

Kompleksitas Algoritma

Algoritma dan Kompleksitas Algoritma

Algoritma Sorting (Selection Insertion)

Komputasi Paralel Sebagai Alternatif Solusi Peningkatan Kinerja Komputasi

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 2: 16 Mei 2016

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

MODUL IV PENCARIAN DAN PENGURUTAN

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

KOMPUTASI PADA JARINGAN KOMPUTER SEBAGAI ALTERNATIF PENINGKATAN KINERJA KOMPUTASI

STRUKTUR DASAR ALGORITMA

Jurnal Mahajana Informasi, Vol.1 No 2, 2016 e-issn: SIMULASI PENGURUTAN DATA DENGAN ALGORITMA HEAP SORT

Aturan Untuk Menentukan Kompleksitas Waktu Asimptotik. Penjelasannya adalah sebagai berikut: T(n) = (n + 2) log(n 2 + 1) + 5n 2

Penerapan Struktur Data Pohon dalam Implementasi Algoritma Heapsort dan Tinjauan Kompleksitas Waktunya

Analisa Kompleksitas Algoritma. Sunu Wibirama

Soal dan Jawaban Materi Graf, Pohon, dan Kompleksitas Algoritma

Solusi UTS Stima. Alternatif 1 strategi:

NASKAH UJIAN UTAMA. JENJANG/PROG. STUDI : DIPLOMA TIGA / MANAJEMEN INFORMATIKA HARI / TANGGAL : Kamis / 18 FEBRUARI 2016

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

Konstruksi Dasar Algoritma

BAB VII ALGORITMA DIVIDE AND CONQUER

BAB VI SORTIR ATAU PENGURUTAN

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

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

BAB 2 LANDASAN TEORI

ANALISIS ALGORITMA BINARY SEARCH

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

Penerapan Pohon Dalam Heap Sort

BAB V SORTING (PENGURUTAN) INTERNAL

Aplikasi Algoritma Greedy pada Optimasi Pelaksanaan Misi dalam Permainan Assassins Creed : Revelations

Sieve of Eratosthenes dan Aplikasinya Dalam Problem Solving

BAB III ANALISIS KOMPLEKSITAS ALGORITMA

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

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

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

Algoritma Greedy (lanjutan)

Kompleksitas Algoritma dalam menentukan Solvabilitas Sliding N-Puzzle

Algoritma Radix Sort

Pengelompokan Organisme Dengan Menggunakan Algoritma Kruskal

BAB II LANDASAN TEORI

Algoritma Divide and Conquer. (Bagian 2)

Algoritma Divide and Conquer (Bagian 1)

Langkah Awal menuju Analisis Kompleksitas Algoritma

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

BAB I PENDAHULUAN Latar Belakang

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

BAB 2 LANDASAN TEORI

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

Ujian Tengah Semester Struktur Data dan Algoritma Fakultas Ilmu Komputer, Universitas Indonesia 9 November 2006

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

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

Algoritma Pengurutan Data Kompleksitas dan Penerapannya

Implementasi Algoritma Greedy pada Permainan Ludo

PENGANTAR KOMPUTER & SOFTWARE II

Heap Tree dan Kegunaannya dalam Heap Sort

Analisis dan Strategi Algoritma

(Binary) Heap. Binary tree yang menyimpan pasangan prioritas (atau prioritas elemen) pada node Property Heap :

Pengantar Analisa Algoritma

Sorting Algorithms. Buble Sort

Transkripsi:

Analisis Algoritma Jimmy Tirtawangsa Universitas Telkom 2014

Daftar Isi (1) Motivasi (2) Kompleksitas dan Optimalitas (3) Struktur data (4) Teknik 2 analisis algoritma (5) Struktur graf (6) Problem Sulit/Intraktabel

Kompleksitas dan Optimalitas Saat menghadapi problem komputasi: (1) Cari sebuah solusi algoritmik (a) Cari ide, buat algoritma (b) Buktikan algorima sesuai (c) Analisis kompleksitasnya (2) Kurang puas? Perbaikan solusi (3) Apakah solusi optimal? (4) Kiat apa jika optimal juga tidak cukup. Menembus batas

Contoh Ideal: Pengurutan Data Satu problem komputasi yang sangat banyak manfaatnya Sudah diselidiki oleh banyak orang Berbagai solusi telah dikembangkan Optimalitas solusi sudah terbukti Berbagai cara untuk mengingkari batas optimal juga banyak dilakukan

Pengurutan Data Masukan: Sekumpulan data tersimpan dalam array Keluaran: Salah satu permutasi data tersebut, dimana data terurut monotonik membesar dari indek pertama s.d. indek terakhir Batasan: Algoritma menggunakan operator pembandingan dua data untuk menguji relasi antar data (<, <=, >, atau >=)

Pengurutan Berbasis Seleksi (SelectionSort) Ide: Pada setiap iterasi, cari data dengan nilai terbesar dan taruh di lokasi terakhir. Algoritma SelectionSort: (1)i = n (2)while i > 1 do (3) j = Max(A, 1, i) (4) TukarPosisi(A, i, j) (5) i = i 1 (6)endwhile

Pengurutan Berbasis Seleksi Dengan fungsi max sbb: fungsi Max( A, awal, akhir ) returns imax (1)imax = awal (2)j = imax + 1 (3)while j <= akhir do (4) if A[j] > A[imax] then imax = j (5) j = j + 1 (6)endwhile (7)return imax

Contoh Proses Pengurutan

Beberapa Obvervasi Pengurutan yang sama dapat diperoleh dengan mencari nilai terkecil dan ditaruh diawal array Stabil adalah istilah untuk pengurutan, dimana apabila ada data yang ekivalen (sama besar), setelah diurutkan, urutan semula tetap dipertahankan. Apakah Selection Sort stabil?

Pengurutan Berbasis Seleksi Kebenaran algoritma tersebut dalam mengurutkan data bergantung pada bukti untuk dua hal berikut: Algoritma tersebut akan berhenti setelah mengurutkan data Setelah berhenti, data memang terurut

Pengurutan Berbasis Seleksi Algoritma tersebut pasti akan berhenti karena: Semua instruksi didalam loop tersebut finite, atau pasti akan selesai/berhenti Iterasi bergantung pada variabel i, dan variabel i bergerak dari n s.d. 2 (sebelum i mencapai nilai 1 sudah keluar dari loop).

Loop Invarian Algoritma SelectionSort Untuk membuktikan kebenaran algoritma pengurutan diatas, perhatikan baris 3 (while i > 1 do) Apabila algoritma tersebut benar, maka setiap memasuki loop tersebut, selalu berlaku kondisi (loop invarian) Data A[i+1..n] sudah terurut, dan Data A[1..i] < data A[i+1..n] Sehingga pada saat keluar dari loop tersebut, atau i = 1, maka A[2..n] sudah terurut, dan A[1] lebih kecil dari semua yang lain DPL, A[1..n] seluruhnya terurut

Pembuktian dengan induksi Pada awal iterasi, i == n Basis: trivial karena belum ada data terurut Hipotesis: asumsi kondisi berlaku pada 1 < i==k < n A[k+1..n] terurut A[1..k] < A[k+1..n] Induksi: Buktikan tetap berlaku untuk iterasi i==k-1 Proses didalam loop pada iterasi ke-i==k j berisi data terbesar diantara A[1..k] Karena TukarPosisi maka A[k,k+1,..n] terurut dan A[1..i- 1] < A[k, k+1..n] Pada langkah terakhir i=i-1, maka kondisi diatas kembali berlaku untuk i==k-1 Terbukti dengan induksi

Penggunaan Sumber Daya Biasanya dihitung terkait dengan banyaknya data masukan Sumber daya dapat berupa waktu eksekusi, Atau besar memori yang digunakan, Atau kebutuhan jaringan, dll

Perhitungan Sumber Daya Tidak menjumlahkan seluruh operasi yang dilakukan: Terlalu rumit Waktu eksekusi setiap instruksi berbeda untuk jenis prosesor berlainan Yang dicari adalah tren atau relasi antara kebutuhan sumber daya terhadap pertumbuhan data Cukup menghitung operator yang relevan Pada proses pengurutan diatas, operator perbandingan data dianggap relevan

Fungsi Kompleksitas Terhadap data masukan, adalah fungsi asimtot untuk perkiraan kebutuhan sumber daya: Apabila merupakan perkiraan maksimum, fungsi tersebut menjadi batas atas Sebaliknya,jika perkiraan kebutuhan minimum, fungsi adalah batas bawah Dapat merupakan perkiraan kompleksitas: Rata-rata atas suatu distribusi data tertentu Atas situasi terburuk yang mungkin terjadi

Batas Atas dan Batas Bawah Notasi O-Besar Notasi Omega-Besar Notasi Theta-Besar Notasi o-kecil Notasi omega-kecil

Analisis Kompleksitas Pengurutan berbasis Seleksi Apabila fungsi Max memerlukan waktu Θ(i) pada iterasi ke-i, dimana i=2..n Maka waktu yang diperlukan adalah n i=2 Θ(i)=Θ( (n 1)(n+2) 2 )=Θ(n 2 )

Latihan (1) Dengan induksi buktikan kebenaran fungsi Max (2) Tunjukan Θ(n) adalah kebutuhan waktu eksekusi Max (3) Mengapa hasil yang diperoleh dalam notasi-θ? (4) Pelajari dan lakukan eksperimen dengan algoritma Selection sort, Bublesort, dan Insertion sort. Mengapa Bublesort lebih lambat daripada yang lain? (5)Apakah Bublesort dan Insertion sort stabil?

Pengurutan Yang Lebih Cepat Alasan perlu solusi yang lebih cepat Alasan saat solusi lebih cepat tidak diperlukan Percepatan dapat diperoleh dengan menghilangkan redudansi proses Sumber redundansi proses: Pemeriksaan yang tidak perlu Pengulangan pemeriksaan Tidak ada mekanisme memanfaatkan hasil pemeriksaan sebelumnya

Pengurutan dengan Heap (HeapSort) Heap: Struktur berbentuk pohon, dimana nilai data suatu node selalu lebih besar dari nilai data anak-anaknya Nilai data root selalu paling besar Representasi heap dalam array: Anak node i adalah node 2*i dan 2*i+1 Root adalah node 1 Dua operasi heap: BangunHeap PerbaikiHeap

Algoritma Heapsort Ide: Memanfaatkan heap untuk mempercepat proses seleksi Algoritma: (1)BangunHeap(A, n) (2)i = n (3)while i > 1 do (4) TukarPosisi(A, 1, i) (5) PerbaikiHeap(A, 1, i-1) (6) i = i 1 (7)endwhile

PerbaikiHeap(A, i, n) (1)lanjut = true (2)while lanjut do (3) lanjut = false (4) p = i; l = 2*i; r = l+1 (5) if l <= n and A[l] > A[p] then p = l (6) if r <= n and A[r] > A[p] then p= r (7) if i!= p then (8) TukarPosisi(A, i, p) (9) lanjut = true (10) i = p (11) endif (12)endwhile

Prosedur BangunHeap(A, n) (1)i = floor(n/2) (2)while i >= 1 do (3) PerbaikiHeap(A, i, n) (4) i = i - 1 (5)endwhile

Pengurutan dengan Heap Bukti kebenaran algoritma Heapsort mirip dengan bukti untuk algoritma sebelumnya Asalkan prosedur BangunHeap dan PerbaikiHeap selalu menaruh data terbesar diposisi A[1]

Kebenaran PerbaikiHeap Prosedur ini berasumsi bahwa heap sudah benar, kecuali pada posisi ke-i Baris 4-6 prosedur tersebut membandingkan node ke-i dengan kedua anaknya, dan diperoleh node p dengan data terbesar. Jika node i bukan yang terbesar, baris 7-11 memastikan sekarang kembali menjadi yang terbesar Baris 10 i menjadi p, sehingga asumsi kembali benar Proses berhenti jika node i tidak mempunyai anak node lagi data node i lebih besar dari data anak nodenya

Kebenaran BangunHeap Pada awalnya, data belum membentuk heap Tapi, A[ n/2..n] tidak mempunyai anak, sehingga masing2 memenuhi definisi sebagai sub-heap yang benar Dimulai dari i == n/2-1,dengan demikian pada setiap iterasi, hanya node i yang mungkin melanggar aturan heap, dan ini dapat diperbaiki oleh PerbaikiHeap Sehingga saat akhir iterasi, i mencapai 1, seluruh heap terbentuk

Pengurutan dengan Heap Kompleksitas PerbaikiHeap bergantung pada jumlah iterasi 2-12: Berhenti jika i == p atau i > n/2 Atau berlanjut dengan i == 2*i atau 2*i+1 Sehingga diperoleh O(log(n) log(i)) Untuk i == 1 maka log(1) = 0, atau O(log(n))

Pengurutan dengan Heap Kompleksitas BangunHeap adalah akumulasi dari PerbaikiHeap n 2 Ο(log(n) log(i)) n i=1 2 Ο(log(n)) Kompleksitas BangunHeap adalah O(n log(n))

Algoritma Heapsort Algoritma: (1)BangunHeap(A, n) O(n log n) (2)i = n O(1) (3)while i > 1 do n-1 iterasi (4) TukarPosisi(A, 1, i) O(1) (5) PerbaikiHeap(A, 1, i-1) O(log n log i) (6) i = i 1 O(1) (7)endwhile

Kompleksitas Heapsort Kompleksitas Heapsort n Ο(n log(n))+ i=2 Ο(log(n) log(i)). Ο(n log(n))+(n 1)Ο(log(n)). 2Ο(n log(n)) Atau O(n log n)

Latihan (1) Pelajari algoritma Quicksort dan Mergesort. Bandingkan dengan algoritma Heapsort! Dalam kasus seperti apa Heapsort lebih baik, dan dalam kasus apa Quicksort lebih baik? Begitu juga, bandingkan dengan Mergesort. (2) Apakah Heapsort stabil atau tidak stabil? Bagaimana dengan Quicksort dan Mergesort?

Batas Optimal Pengurutan Perbaikan proses seleksi, meningkatkan performa dari O(n 2 ) menjadi O(n log n) Apakah mungkin untuk mendapatkan solusi secara asimtot lebih cepat lagi? Atau solusi yang sudah diperoleh yang paling cepat? Dengan menganalisis masalah yang dihadapi, dapat diketahui jumlah minimum operasi yang diperlukan!

Batas Optimal Pengurutan Proses pengurutan pada dasarnya adalah proses permutasi dari data yang diberikan Untuk n data, maka akan ada n! (n faktorial) kemungkinan permutasi data Salah satu permutasi akan memberikan susunan data yang terurut Berapa banyak minimum operasi perbandingan (dalam situasi terburuk) untuk melakukan permutasi dari satu urutan ke satu urutan lain?

Pohon Keputusan Permutasi dari satu susunan data ke susunan lain diperoleh melalui serangkaian operasi perbandingan. Setiap operasi menghasilkan dua alur berbeda, akibat dari dari kondisi True/False Karena itu, dari susunan data semula, sejumlah rangkaian operasi perbandingan kesemua kemungkinan n! permutasi susunan data membentuk graf pohon. (Pohon keputusan)

Pohon Keputusan Masing 2 algoritma sorting dengan suatu input susunan data awal akan membentuk pohon keputusan sendiri yang khas. Karena ide algoritma tersebut, sangat mungkin beberapa operasi membandingkan dua data yang itu 2 lagi lebih dari sekali dalam satu alur untuk mencapai permutasi akhir yang diinginkan. Minimum operasi yang dibutuhkan untuk algoritma tsb == maksimum tinggi pohon keputusannya

Pohon Keputusan untuk 3 data

Optimalitas Proses Pengurutan Algoritma ideal akan mempunyai pohon keputusan yang sangat balance dan tidak ada duplikasi operasi perbandingan dalam tiap jalurnya. Sehingga tinggi pohon adalah log(n!) atau Ω(n log n) Artinya hanya dengan operasi pembandingan, proses pengurutan data secara asimtotik tidak dapat lebih cepat dari Ω(n log n) Dpl. diisimpulkan Heapsort adalah algoritma optimal, atau Θ(n log n) Mungkin saja algoritma lain mempunyai eksekusi lebih cepat/efisien, tetapi kompleksitasnya tidak lebih baik

Latihan Lengkapi bukti pohon keputusan diatas sehingga diperoleh Ω(n log n)

Menembus Batas Dalam beberapa situasi, algoritma optimal yang paling efisienpun, mungkin masih belum mencukupi Kaji ulang masalah yang dihadapi Data mempunyai keterbatasan tertentu Mungkin malah data tidak perlu diurutkan Mungkin pengurutan tidak perlu dengan operasi perbandingan data Tetapi untuk menjamin keterurutan, setiap elemen data harus terakses, sehingga Ω(n) adalah batas trivial yang tidak dapat dilanggar

Pengurutan dengan Pencacahan (CountingSort) Apabila rentang data (k) dari terkecil s.d. terbesar, terbatas atau k = O(n) Untuk kemudahan pembahasan, data dianggap bilangan integer Jumlah kemunculan data dapat dihitung, dan lokasi setelah terurut dapat diantisipasi

Pengurutan dengan Pencacahan Algoritma CountingSort (1)for i = terkecil to terbesar do (2) C[i] = 0 (3)for i = 1 to n do (4) C[A[i]]++ (5)for i = terkecil+1 to terbesar do (6) C[A[i]] = C[A[i]] + C[A[i-1]] (7)for i = n downto 1 do (8) B[C[A[i]]] = A[i] (9) C[A[i]]--

Pengurutan dengan Pencacahan

Pengurutan dengan Pencacahan Kebenaran CountingSort: Untuk data i dari terkecil s.d. terbesar, Setelah pencacahan, C[i] berisi jumlah kemunculan masing2 data i Setelah akumulasi, C[i] berisi jumlah data <= i Dpl, C[i] dapat menunjukkan indek terbesar dimana data i disimpan setelah terurut (jika data i ada di A) Dengan memeriksa data di A satu persatu, data dapat disimpan sesuai posisi di C[i], ke array B Isi C[i] disesuaikan setelah data disimpan di B Karena C[i] menunjuk posisi terbesar, dengan memulai pemeriksaan A dari indek terbesar, hasil terurut akan stabil!

Kompleksitas CountingSort Proses inisialisasi array pencacah C O(k) Proses pencacahan isi array A O(n) Proses akumulasi hasil pencacahan di C O(k) Proses redistribusi data dari A ke B O(n) Total adalah O(k+n), sehingga jika k = O(n), maka Countingsort adalah O(n)

Observasi CountingSort Counting Sort tergantung atas rentang data yang diurutkan Counting Sort hanya membutuhkan waktu linear Counting Sort bersifat stabil

Pengurutan Bertahap Berdasar Kolom Data (RadixSort) Untuk data yang lebih besar Apabila data dapat dipecah terhadap kolom/digit data Pengurutan dimulai dari digit yang lebih kecil (least significant digit) Kemudian diulang, sampai ke digit terakhir (most significant digit)

Pengurutan Bertahap Berdasar Kolom Data Pengurutan per kolom dapat menggunakan Counting Sort Karena rentang digit per kolom dapat jauh lebih sedikit dari jumlah data

Pengurutan Bertahap Berdasar Kolom Data

Algoritma RadixSort Kompleksitas algoritma adalah l Ο(n) dimana l adalah jumlah kolom Apabila l adalah konstan, maka diperoleh O(n)

Latihan (1) Apa yang perlu dilakukan jika data untuk CountingSort ternyata bukan integer? (2)Apa yang terjadi jika pada RadixSort, pengurutan dimulai dari digit kanan lebih dulu? (3) Pelajari algoritma BucketSort. Mengapa waktu algoritma tersebut juga linear terhadap besar input?

Latihan (4) Mengapa Ω(n) adalah batas bawah proses sorting? (5) Mengapa Counting Sort stabil? Bagaimana dengan Radixsort dan Bucketsort?

Rangkuman Cari solusi efisien Cari solusi lebih baik jika dibutuhkan Batas atas usaha mencari solusi yang lebih baik Alternatif solusi jika solusi optimum belum memadai

Rujukan T. H. Cormen, C. E. Leiserson, R. L. Rivest, dan C. Stein, Introduction to Algorithms, edisi 3, 2009. S Dasgupta, C. H. Papadimitrou, dan U. V. Vazirani, Algorithms, 2006.