Pertemuan 11 Dan 12 - Sorting - Penggurutan
Pertemuan 11 Dan 12 - Sorting - Penggurutan
12 35 9 11 3 17 23 15 31
3 9 11 12 15 17 23 31 35
Ada 2 hal untuk menilai pengurutan yang baik:
1. Jumlah pembandingan yang dilakukan atau
sering disingkat dengan simbol C
2. Jumlah penukaran atau penggeseran data
yang dilakukan atau sering disingkat dengan
M
Metode Bubble Sort diinspirasikan oleh
gelembung sabun yang berada dipermukaan air.
Karena berat jenis gelembung sabun lebih ringan
daripada berat jenis air, maka gelembung sabun
selalu terapung ke atas permukaan.
Metode ini dilakukan dengan cara
membandingkan elemen yang sekarang dengan
yang berikutnya, jika elemen berikutnya lebih
kecil maka elemen ditukar
Untuk mendapatkan larik yang terurut menaik, proses yang dilakukan pada
setiap langkah sebagai berikut:
Pada akhir langkah N-1, elemen L[N-1] berisi harga minimum ke-(N-1) dan
larik L[1..N-1] terurut menaik, sehingga elemen yang tersisa adalah L[N]
yang tidak perlu lagi diurutkan karena hanya satusatunya.
procedure UrutGelembung(input/output L: Larik; input N :
integer)
Terurut
2 3 8 10 15 22
Procedure StraightInsertionSort;
Var i, j , x : word;
Begin
for i := 2 to N do
begin
x := Data[i];
Data[0] := x;
j := i – 1;
while (x < Data[j]) do
begin
Data[j + 1] := Data[j];
dec (j);
end;
Data[j + 1] := x;
end;
End;
Buat pengurutan buble sort, selection sort,
insertion sort, dari bilangan di bawah ini :
23, 46, 20, 22, 14, 28, 34, 26, 41
Metode ini dilakukan dengan cara membandingkan
elemen sekarang dengan elemen berikutnya,jika
ditemukan elemen yang lebih kecil dari elemen
sekarang maka dicatat posisinya dan kemudian
tukar data dari posisi sekarang ke posisi yang
terakhir dicatat tsb.
1. i1
2. Selama ( i <= N-1) kerjakan baris 3 sampai 9
3. ki
4. ji+1
5. Selama ( j <= N) kerjakan baris 6 dan 7
6. Jika (Data[k] > Data[j]) maka k j
7. jj+1
8. Tukar Data[i] dengan Data[k]
9. ii+1
Procedure Asc_Selection;
Var
min, pos : byte ;
Begin
for i := 1 to max – 1 do
Begin
pos := i ;
for j := i+1 to max do
If data [j] < data [pos] then pos := j;
If i <> pos then TukarData(data[i], data [pos]);
End;
End;