Pengurutan sorting DEFINISI SORT Sorting pengurutan Sorted terurut

  • Slides: 38
Download presentation
Pengurutan (sorting)

Pengurutan (sorting)

DEFINISI SORT • • Sorting = pengurutan Sorted = terurut menurut kaidah/aturan tertentu Data

DEFINISI SORT • • Sorting = pengurutan Sorted = terurut menurut kaidah/aturan tertentu Data pada umumnya disajikan dalam bentuk sorted. Contoh: • • Data Mahasiswa Kata-kata dalam kamus File-file di dalam sebuah directory Indeks sebuah buku Data mutasi rekening tabungan dll Bayangkan jika data di atas tidak terurut!

Metode Sorting • Metode: – ascending (urut naik) – descending (urut turun) • contoh

Metode Sorting • Metode: – ascending (urut naik) – descending (urut turun) • contoh Data Acak Ascending Descending : 5 6 8 1 3 25 10 : 1 3 5 6 8 10 25 ; Amir Budi Badu Dudi : 25 10 8 6 5 3 1

Sorting-1 • Bentuk: – Ascending if N obyek disimpan dalam larik L, then menyusun

Sorting-1 • Bentuk: – Ascending if N obyek disimpan dalam larik L, then menyusun elemen larik L[1] ≤ L[2] ≤ L[3] ≤ …≤ L[N] – Descending if N obyek disimpan dalam larik L, then menyusun elemen larik L[1] ≥ L[2] ≥ L[3] ≥ … ≥ L[N]

Tujuan sorting • • Mudah dalam Membaca data Mudah dalam menemukan data Penyajian data

Tujuan sorting • • Mudah dalam Membaca data Mudah dalam menemukan data Penyajian data lebih teratur dll

Jenis Algoritma Sorting • Beberapa algoritma untuk melakukan sorting: – Bubble sort – Selection

Jenis Algoritma Sorting • Beberapa algoritma untuk melakukan sorting: – Bubble sort – Selection sort – Insertion sort – Shell sort

(Bubble Sort/pengurutan gelembung) • Metode sorting termudah • Bubble Sort mengurutkan data dengan cara

(Bubble Sort/pengurutan gelembung) • Metode sorting termudah • Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. • Ascending : if elemen sekarang > dari elemen berikutnya then kedua elemen ditukar • Descending: if elemen sekarang < dari elemen berikutnya then kedua elemen ditukar

Bubble Sort (2) Algoritma: banyaknya data: n Data diurutkan/disorting dari yang bernilai besar Proses

Bubble Sort (2) Algoritma: banyaknya data: n Data diurutkan/disorting dari yang bernilai besar Proses step 1 : Periksalah nilai dua elemen mulai dari urutan ke-n sampai urutan ke-1. Jika nilai kiri<kanan, tukarkan kedua data itu. step 2 : Periksalah nilai dua elemen mulai dari urutan ke-n sampai urutan ke-2. Jika nilai kiri<kanan, tukarkan kedua data itu. step n-1 : Periksalah nilai dua elemen mulai dari urutan ke-n sampai urutan ke-n-1. Jika nilai kiri<kanan, tukarkan kedua data itu.

Bubble Sort: pseudocode BUBBLESORT(A) 1 for i← 1 to length[A] 2 do for j←length[A]

Bubble Sort: pseudocode BUBBLESORT(A) 1 for i← 1 to length[A] 2 do for j←length[A] downto i+1 3 do if A[j] < A[j-1] 4 then exchange A[j] ↔ A[j-1]

Contoh Algoritma: BUBBLE SORT … banyaknya data: n Data diurutkan/disorting dari yang bernilai besar

Contoh Algoritma: BUBBLE SORT … banyaknya data: n Data diurutkan/disorting dari yang bernilai besar Proses step 1 : Periksalah nilai dua elemen mulai dari urutan ke-n sampai urutan ke-1. Jika nilai kiri<kanan, tukarkan kedua data itu. step 2 : Periksalah nilai dua elemen mulai dari urutan ke-n sampai urutan ke-2. Jika nilai kiri<kanan, tukarkan kedua data itu.

step n-1 : Periksalah nilai dua elemen mulai dari urutan ke-n sampai urutan ke-n-1.

step n-1 : Periksalah nilai dua elemen mulai dari urutan ke-n sampai urutan ke-n-1. Jika nilai kiri<kanan, tukarkan kedua data itu.

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 7 4

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 7 4 5 8 10

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 7 4

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 7 4 5 10 8

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 7 4

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 7 4 10 5 8

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 7 10

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 7 10 4 5 8

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7 4 5 8

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7 4 5 8 Step-2 10 7 4 5 8

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7 4 5 8 Step-2 10 7 4 8 5

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7 4 5 8 Step-2 10 7 8 4 5

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7 4 5 8 Step-2 10 8 7 4 5

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7 4 5 8 Step-2 10 8 7 4 5 Step-3 10 8 7 4 5

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7 4 5 8 Step-2 10 8 7 4 5 Step-3 10 8 7 5 4

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7 4 5 8 Step-2 10 8 7 4 5 Step-3 10 8 7 5 4

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7

Bubble Sort: tahap demi tahap Awal 7 4 5 8 10 Step-1 10 7 4 5 8 Step-2 10 8 7 4 5 Step-3 10 8 7 5 4 Step-4 10 8 7 5 4

Selection Sort • Merupakan kombinasi antara sorting dan searching • Untuk setiap proses, akan

Selection Sort • Merupakan kombinasi antara sorting dan searching • Untuk setiap proses, akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array. • Misalnya untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]). • Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.

Selection Sort: Pseudocode SELECTIONSORT(A) 1 for i← 1 to length[A]-1 2 min = i;

Selection Sort: Pseudocode SELECTIONSORT(A) 1 for i← 1 to length[A]-1 2 min = i; 3 do for j ← i+1 to length[A] 4 do if A[j] < A[min] 5 min = j; 6 exchange A[min] ↔ A[i] Prinsip kerja: Dari elemen sebanyak n, Carilah elemen terkecil dari array A, dan swap-lah elemen terkecil tersebut dengan elemen pertama (A[1] ). Carilah elemen terkecil kedua dari array A, dan swap-lah elemen tersebut dengan elemen kedua (A[2]) Ulangi sampai n-1 elemen pertama dari array A

Selection Sort: contoh 2 3 4 1 5 2 4 6 2 1 2

Selection Sort: contoh 2 3 4 1 5 2 4 6 2 1 2 3 4 1 2 4 6 1 2 3 4 1 2 3 4 3 1 5 5 5 4 5 5 5 6 3 6 3 6 4 6 6 Carilah elemen terkecil & tukar dengan “ 5” 1 fixed. Carilah elemen terkecil & tukar dengan “ 2” 1, 2 fixed. Carilah elemen terkecil & tukar dengan “ 4” 1, 2, 3 fixed. Carilah elemen terkecil & tukar dengan “ 6” 1, 2, 3, 4 fixed. Carilah elemen terkecil & tukar dengan “ 5” 1, 2, 3, 4, 5 fixed, otomatis elemen terakhir sudah pada posisi yang benar

Insertion Sort • Mirip dengan cara orang mengurutkan kartu, selembar demi selembar kartu diambil

Insertion Sort • Mirip dengan cara orang mengurutkan kartu, selembar demi selembar kartu diambil dan disisipkan (insert) ke tempat yang seharusnya. • Pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan ditempatkan (diinsert) diposisi yang seharusnya. • Pada penyisipan elemen, maka elemen lain akan bergeser ke belakang

Insertion Sort: pseudocode INSERTION-SORT(A) 1 for j← 2 to length[A] 2 do key←A[j] 3

Insertion Sort: pseudocode INSERTION-SORT(A) 1 for j← 2 to length[A] 2 do key←A[j] 3 Insert A[j] ke sekuens yang sudah disorting A[1…j-1] 4 i← j-1 5 while i>0 and A[i] > key 6 do A[i+1] ←A[i] 7 i ← i -1 8 A[i+1] ←key

Insertion Sort: contoh 2 3 4 5 6 1 5 2 4 6 1

Insertion Sort: contoh 2 3 4 5 6 1 5 2 4 6 1 3 2 1 2 3 4 5 6 2 5 4 6 1 3 1 2 3 4 5 6 2 4 5 6 1 3 1 2 3 4 5 6 1 2 4 5 6 3 1 2 3 4 5 6 3 1 4 5 6

Shell Sort(1) • Metoda pertambahan menurun (diminishing increment). • Metoda dikembangkan oleh Donald L.

Shell Sort(1) • Metoda pertambahan menurun (diminishing increment). • Metoda dikembangkan oleh Donald L. Shell tahun 1959. • Metoda ini memanfaatkan penukaran sepasang elemen untuk mencapai keadaan urut. Dalam hal ini jarak dua elemen yang dibandingkan ditukarkan tertentu.

Shell Sort(2) • Algoritma ini bisa dipandang sebagai modifikasi dari algoritma Insertion Sort, lebih

Shell Sort(2) • Algoritma ini bisa dipandang sebagai modifikasi dari algoritma Insertion Sort, lebih tepatnya memanfaatkan kondisi-kondisi positif dari Insertion Sort. • Keuntungan: 1. Insertion Sort bisa sangat efisien untuk data dalam kondisi hampir terurut. 2. Karena Insertion Sort sangat sederhana, maka overhead cost untuk proses-proses tambahannya pun amat kecil sehingga untuk jumlah data n yang kecil masih bisa lebih cepat dari algoritma O(n log n).

Algoritma Shell Sort • Langkah pertama, ambil elemen pertama dan kita bandingkan dengan elemen

Algoritma Shell Sort • Langkah pertama, ambil elemen pertama dan kita bandingkan dengan elemen pada jarak tertentu dari elemen pertama tersebut. • Kemudian elemen kedua dibandingkan dengan elemen lain dengan jarak yang sama. • Demikian seterusnya sampai seluruh elemen dibandingkan.

Shell sort Original: 40 2 1 43 3 65 0 -1 58 3 42

Shell sort Original: 40 2 1 43 3 65 0 -1 58 3 42 4 5 -sort: Sort setiap item yang berjarak 5: 40 2 1 43 3 65 0 -1 58

Shell sort Original: 40 2 1 43 3 65 0 -1 58 3 42

Shell sort Original: 40 2 1 43 3 65 0 -1 58 3 42 4 -1 43 3 42 2 1 58 3 65 4 -1 3 1 4 40 3 42 43 65 58 2 1 3 2 40 3 43 65 4 40 42 42 65 43 43 58 58 65 65 After 5 -sort: 40 0 After 3 -sort: 2 0 After 1 -sort: -1 0

Shell sort: Gap values • Gap: jarak antara elemen yang di-sort. • Seiring berjalannya

Shell sort: Gap values • Gap: jarak antara elemen yang di-sort. • Seiring berjalannya waktu, gap diperkecil. Shell sort juga dikenal sebagai Diminishing Gap Sort. • Shell mengusulkan mulai dengan ukuran awal gap = N/2, dan dibagi 2 setiap langkah. • Ada banyak variasi pemilihan gap.

Kinerja Shell sort O(N 3/2) O(N 5/4) Ada 3 “nested loop”, tetapi Shell sort

Kinerja Shell sort O(N 3/2) O(N 5/4) Ada 3 “nested loop”, tetapi Shell sort masih lebih baik dari Insertion sort. Mengapa? O(N 7/6)