Struktur Data Algoritma Sorting Rahmady Liyantanto liyantanto.wordpress.com
PENGERTIAN 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! 2
Tujuan sorting Mudah dalam Membaca data Mudah dalam menemukan data Penyajian data lebih teratur dll
Macam-Macam Algoritma Sorting Beberapa algoritma untuk melakukan sorting: Bubble sort Selection sort Insertion sort Shell sort Merge sort Quick sort
Bubble Sort Bubble = busa/udara dalam air – apa yang terjadi? Busa dalam air akan naik ke atas. Mengapa? Ketika busa naik ke atas, maka air yang di atasnya akan turun memenuhi tempat bekas busa tersebut. Pada setiap iterasi, bandingkan elemen dengan sebelahnya: yang busa naik, yang air turun!
BUBBLE SORT: SEBUAH ITERASI 2 1 40 3 43 -1 58 65 42 4 2 1 40 3 43 -1 65 58 42 4 2 1 40 3 43 -1 65 58 42 4 2 1 40 3 43 -1 58 65 42 4 2 1 40 3 43 -1 58 65 42 4 2 1 40 3 43 -1 58 42 4 65 2 1 40 3 43 -1 58 42 65 4 2 1 40 3 43 -1 58 42 65 4 2 1 40 3 43 -1 58 65 42 4 2 1 40 3 43 65 -1 58 42 4 2 1 40 3 43 65 -1 58 42 4 2 40 1 43 3 65 -1 58 42 4 2 40 1 43 3 65 -1 58 42 4 40 2 1 43 3 65 -1 58 42 4 2 1 40 43 3 65 -1 58 42 4 2 1 40 43 3 65 -1 58 42 4 2 1 40 3 43 65 -1 58 42 4 2 1 40 3 43 65 -1 58 42 4 2 1 40 43 3 65 -1 58 42 4 2 1 40 3 43 65 -1 58 42 4
BUBBLE SORT: ITERASI BERIKUTNYA 40 2 1 43 3 65 -1 58 42 4 1 2 65 2 1 40 3 43 -1 58 42 4 1 2 3 40 -1 43 42 4 3 65 58 4 1 2 3 40 65 -1 43 58 42 4 Perhatikan bahwa pada setiap iterasi, dapat dipastikan satu elemen akan menempati tempat yang benar
BUBBLE SORT: TERMINASI ALGORITMA 5 1 2 3 -1 40 65 43 58 42 4 1 -1 3 2 65 43 58 42 40 4 6 -1 1 2 65 3 43 58 42 40 4 7 8 -1 1 2 65 3 43 58 42 40 4 Berhenti di sini!
BUBBLE SORT: ALGORITMA Procedure Procedure bubble(var data:array; jumlah:integer); var I, j : integer; begin for i:=1 to n-1do for j:=1 to n-i do if dta[j] > dta[j+1] then tukar(dta[j],dta[j+1]); //memanggil procedure tukar End;
SELECTION SORT: IDE DASAR Kondisi awal: Unsorted list = data Sorted list = kosong Ambil yang terbaik (select) dari unsorted list, tambahkan di belakang sorted list. Lakukan terus sampai unsorted list habis.
SELECTION SORT: CONTOH 40 2 1 43 3 65 -1 58 42 4 40 2 1 43 3 4 -1 58 3 42 65 40 2 1 43 3 4 -1 42 3 58 65 40 2 1 3 3 4 -1 42 43 58 65
SELECTION SORT: ALGORITMA procedure selection; var i,j,min,pos:byte; begin for i:= 1 to jumlah-1 do pos:=i; {pivot=pos} for j:= i+1 to jumlah do if data [j] < data[pos] then pos:=j; ` if i<> pos then tukar(data[i], data[pos]); end;
INSERTION SORT: IDE DASAR Kondisi awal: Unsorted list = data Sorted list = kosong Ambil sembarang elemen dari unsorted list, sisipkan (insert) pada posisi yang benar dalam sorted list. Lakukan terus sampai unsorted list habis. Bayangkan anda mengurutkan kartu.
INSERTION SORT: CONTOH 40 2 1 43 3 65 -1 58 42 4 40 2 40 1 43 3 65 -1 58 3 42 4 1 2 40 43 3 65 -1 58 3 42 4
INSERTION SORT: CONTOH (LANJ.) 1 2 40 43 3 65 -1 58 3 42 4 1 2 3 40 43 65 -1 58 3 42 4 1 2 3 40 43 65 -1 58 3 42 4
INSERTION SORT: CONTOH (LANJ.) 1 2 3 40 43 65 -1 58 3 42 4 1 2 3 40 43 65 -1 58 3 42 4 -1 1 1 2 3 2 40 3 43 40 65 43 65 58 3 42 4
INSERTION SORT: CONTOH (LANJ.) -1 1 1 2 2 3 3 40 40 43 43 65 58 65 3 42 4 -1 1 1 2 2 3 3 40 3 43 40 65 43 58 43 58 65 65 42 4 -1 1 2 1 2 3 3 40 43 3 40 65 43 42 65 43 58 65 4 1 2 3 40 43 65 42 -1 58 4
INSERTION SORT: ALGORITMA (MODIF.) procedure asc_insersi; var i,j,temp:byte; begin for i:= 2 to jumlah do temp:=data [i]; j:= i-1 ; while (data[j]>temp) and (j>0)do data[j+1]:=data[j]; dec( j ); end; data[j+1]:=temp;
Menggunakan Record / Struct NRP Nama Mata Kuliah Nilai Angka Nilai Huruf 10041119 Ali SD 80 A 10041116 Hasan 50 E Keterangan : Menggunakan Record / Struct Harus bisa Sorting [bubble, selection, insertion ] berdasarkan NRP, Nama, Mata Kuliah, Nilai. Nilai Huruf adalah Hasil Conversi dari Nilai Angka [ misan 80 maka nilai huruf akan diisi dengan A, dst]
Terima Kasih