Upload
selamatriady
View
13
Download
0
Embed Size (px)
Citation preview
Metode Sorting dan AplikasinyaTugas Kuliah Algoritma dan Struktur Data
Mohammad Aziz FikriManajemen Informatika
Politeknik Negeri LampungBandar Lampung, [email protected]
Sorting—Sorting merupakan suatu proses (operasi) yang mengurutkan data dalam suatu urutan yang dikehendaki. PENGURUTAN DAPAT DILAKUKAN SECARA ASCENDING (URUT NAIK) MAUPUN DESCENDING (URUT TURUN). (Sorting)
Sumber:
(http://www.mdp.ac.id/materi/2012-2013-2/sp244/121076)
I. PENDAHULUAN
SORT adalah Suatu proses pengurutan data yang sebelumnya disusun secara acak atau tidak teratur menjadi urut dan teratur menurut aturan tertentu.• Biasanya pengurutan menjadi 2 (dua), yaitu :• Ascending → Pengurutan dari karakter / angka kecil ke karakter / angka besar.• Descending → Pengurutan dari karakter / angka besar ke karakter / angka kecil.Beberapa Metode StringUntuk melakukan proses pengurutan dapat menggunakan be-berapa metode, diantaranyanya adalah :
Bubble SortSelection SortInsertion SortMerge SortQuick Sort
Sumber: (http://widuri.raharja.info/index.php?title=Logika_dan_Algoritma_%28LA103F%29)
II. BUBBLE SORT
Bubble Sort adalah Suatu metode pengurutan yang membandingkan elemen yang sekarang dengan elemen berikutnya.
Bubble sort sangatlah simple, dan tidak efektif. Metode sorting ini tidak direkomendasikan untuk digunakan. Dikarenakan penggunaan metode ini dapat dikatakan lambat. Metode ini sangat baik jika digunakan dalam skala data yang sedikit, namun sangat tidak disarankan untuk digunakan dalam skala besar
Sumber:
(http://pascal-programming.info/articles/sorting.php)
Contoh Bubble Sort
I. 10 41 5 7 9 8
10 5 41 7 9 8
5 10 41 7 9 8
II. 5 10 41 7 9 8
5 10 7 41 9 8
5 7 10 41 9 8
III. 5 7 10 41 9 8
5 7 10 41 8 9
5 7 10 8 41 9
5 7 8 10 41 9
IV. 5 7 8 10 41 9
5 7 8 10 9 41
5 7 8 9 10 41
Hasilnya :
5 7 8 9 10 41
Aplikasinya dalam Turbo Pascal
void bubblesort2(){
for(i=1;i<n;i++){
for(int j=0;j<n-i;j++){
if(data[j]<data[j+1])
tukar(&data[j],&data[j+1]); //ascending
}
}
}
III. SELECTION SORT
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
Sumber:
(http:// core.ac.uk/download/pdf/11719025.pdf )
Contoh Selection Sort
Posisi 0 1 2 3 4 5
I. 10 41 5 7 9 8
Pembanding Posisi
10 < 41 0
10 > 5 (Tukar Idx) 2
5 < 7 2
5 < 9 2
5< 8 2
Posisi 0 1 2 3 4 5
II. 5 41 10 7 9 8
Pembanding Posisi
41 > 10 (Tukar Idx) 2
10 > 7 (Tukar Idx) 3
7 < 9 3
7 < 8 3
Posisi 0 1 2 3 4 5
III. 5 7 10 41 9 8
Pembanding Posisi
10 < 41 2
10 > 9 (Tukar Idx) 4
7 > 9 (Tukar Idx) 5
Posisi 0 1 2 3 4 5
IV. 5 7 8 41 9 10
Pembanding Posisi
41 > 9 (Tukar Idx) 4
9 < 10 4
Posisi 0 1 2 3 4 5
V. 5 7 8 41 9 10
Pembanding Posisi
41 > 10 (Tukar Idx) 5
Hasilnya : 5 7 8 9 10 41
Aplikasinya dalam Turbo Pascal
void selection_sort(){
for(int i=0;i<n-1;i++){
pos = i;
for(int j=i+1;j<n;j++){
if(data[j] < data[pos]) pos = j; //ascending
}
if(pos != i) tukar(&data[pos],&data[i]);
}
}
IV. INSERTION SORT
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.
Sumber:
(http:// core.ac.uk/download/pdf/11719025.pdf )
Contoh Insertion Sort
I.
Posisi 0 1 2 3 4 5
10 41 5 7 9 8Temp Cek Geser
41 Temp > 10 -
II.
Posisi 0 1 2 3 4 5
10 41 5 7 9 8Temp Cek Geser
5 Temp < 41 Geser data ke-1 ke posisi 25 Temp < 10 Geser data ke-0 ke posisi 1
III.
Posisi 0 1 2 3 4 5
5 10 41 7 9 8Temp Cek Geser
7 Temp < 41 Geser data ke-2 ke posisi 37 Temp < 10 Geser data ke-1 ke posisi 27 Temp > 5 -
IV.
Posisi 0 1 2 3 4 5
5 7 10 41 9 8Temp Cek Geser
9 Temp < 41 Geser data ke-3 ke posisi 49 Temp < 10 Geser data ke-2 ke posisi 39 Temp > 7 -9 Temp > 5 -
V.
Posisi 0 1 2 3 4 5
5 7 9 10 41 8Temp Cek Geser
8 Temp < 41 Geser data ke-4 ke posisi 58 Temp < 10 Geser data ke-3 ke posisi 48 Temp < 9 Geser data ke-2 ke posisi 38 Temp > 7 -8 Temp > 5 -
Aplikasinya dalam Turbo Pascal
void insertion_sort(){
int temp;
for(int i=1;i<n;i++){
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0){
data[j+1] = data[j];
j--;
}
data[j+1] = temp;
}
}
V. MERGE SORT
Adalah teknik sorting dengan ide dasarnya adalah meng-gabungkan setiap kali dua deretan angka atau elemen dan melakukan sort terhadap angka-angka atau elemen-elemen tersebut.
Ulangi langkah tersebut sampai diperoleh dua deretan ele-men yang akan digabungkan menjadi satu deretan angka atau elemen yang sudah di sort.
Sumber: (http://widuri.raharja.info/index.php?title=Logika_dan_Algoritma_%28LA103F%29)
I. MERGE SORT
Divide and conquer approachAlgoritma quickSort(S)
◦ Jika jumlah elemen dalam S = 0 atau 1, return.◦ Pilih sembarang elemen v ∈ S – sebutlah pivot.◦ Partisi S – {v} ke dalam 2 bagian:
- L = {x ∈ S – {v} | x ≤ v}
- R = {x ∈ S – {v} | x ≥ v}◦Kembalikan nilai quickSort(S), diikuti v, diikuti quickSort(S).
Sumber:
(http:// core.ac.uk/download/pdf/11719025.pdf )