1. Pengurutan (sorting )
Oleh
: ROSIDA SIMAMORA
Prodi
: Teknik Informatika
Mata Kuliah : Pemrograman Turbo Pascal
Dosen
:
PEMROGRAMAN TURBO PASCAL
2. 1. Proses mangatur sekumpulan obyek/data menurut urutan atau
susunan tertentu.
2. Urutan obyek/data tersebut dapat menaik (ascending) atau
menurun (desencending).
3. Data yang diurutkan dapat berupa data bertipe dasar atau data
bertipe struktur
4. Data yang sudah terurut memiliki keuntungan yaitu Mempercepat
proses pencarian data.
3. Algoritma pengurutan / sorting bermacam-macam dan setiap algoritma ini
memiliki kinerja yang berbeda-beda. Berikut ini macam-macam algoritma
pengurutan:
Metode Selection Sort
Metode Buble Sort
Metode Merge Sort
Metode Quick Sort
Metode Insertion Sort
Hal yang mempengaruhi Kecepatan Algoritma Sorting adalah Jumlah
Operasi Perbandingan & Jumlah Operasi Pemindahan Data
4. Selection Sort (Metode Seleksi).
Tehnik pengurutan dengan cara pemilihan elemen dgn memilih elemen data
terkecil utk kemudian dibandingkan & ditukarkan dgn elemen pd data
awal, dst s/d seluruh elemen shg akan menghasilkan pola data yg telah
disort.
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]).
5.
6. Ilustrasi Algoritma Selection Sort
29
27
10
8
76
21
1
2
3
4
5
6
8
27
10
29
76
21
1
2
3
4
5
6
8
10
27
29
76
21
1
2
3
4
5
6
8
10
21
29
76
27
1
2
3
4
5
6
8
10
21
27
76
29
1
2
3
4
5
6
8
10
21
27
29
76
1
2
3
4
5
6
Set Index awal = 1
Index terkecil = 4 8
Tukar index 1dengan 4
Set Index awal = 2
index terkecil = 3 10
Tukar index 2 dengan 3
Set Index awal = 3
index terkecil = 6 21
Tukar index 3 dengan 6
Set Index awal = 4
index terkecil = 6 27
Tukar index 4 dengan 6
Set Index awal = 5
index terkecil = 6 29
Tukar index 5 dengan 6
Index awal = 6 Selesai
Data sudah terurut secara
ascending
7.
8. Program SelectionSort;
uses crt;
VAR
Data : array[1..10] of integer;
i,j,n,bantu : integer;
BEGIN
clrscr;
Writeln('Masukkan data anda !'); writeln;
Write('jumlah data anda ? '); readln(n);
writeln('Mulai memasukan data ');
for i:=1 to n do
begin
Write('Data ke-',i,' = ');
readln(data[i]);
end;
for i:=1 to N-1 do
for j := i+1 to N do
begin
if data[i] > data[j] then begin
Bantu := data[i];
data[i] := data[j];
data[j] := Bantu;
end;
end;
for i:=1 to n do
write('(',data[i],'),');
readln;
end.
Hasil program
Masukkan data anda !
jumlah data anda ? 5
Mulai memasukan data
Data ke-1 = 4
Data ke-2 = 6
Data ke-3 = 2
Data ke-4 = 8
Data ke-5 = 5
(2),(4),(5),(6),(8),
9. 1. Metode Bubble Sort (Gelembung)
Teknik yang diinspirasi oleh gelembung sabun yang berada dipermukaan air. Karena berat jenis
gelembung lebih ringan dari pada air, maka gelembung akan naik keatas. (benda yang berat akan
terbenam, benda ringan terapung).
Elemen data
pertukaran.
yang paling kecil diapungkan “diangkat keatas” melalui proses
Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang
dengan elemen berikutnya
Algoritma Bubble Sort
1. Pengecekan mulai dari data ke-1 sampai data ke-n
2. Bandingkan data ke-n dengan data sebelumnya (n-1)
3. Jika lebih kecil maka pindahkan bilangan tersebut dengan bilangan yg ada didepannya
sebelumnya ) satu persatu (n-1,n-2,n-3,....dst)
4. Jika lebih besar maka tidak terjadi pemindahan
5. Ulangi langkah 2 dan 3 s/d sort optimal.
(
10. Analogi :
Larik dengan urut menaik, elemen larik yang berharga paling kecil ‘diapungkan’, artinya diangkat
ke atas (atau ke ujung kiri larik) melalui proses pertukaran.
Proses pengapungan ini dilakukan sebanyak N-1 langkah dengan N adalah ukuran larik.
Pada akhir setiap langkah ke-I, larik L[1..N] akan terdiri atas dua bagian yaitu bagian yang
sudah terurut, yaitu L[1..I] dan bagian yang belum terurut L[I+1..N]. Setelah langkah terakhir,
diperoleh larik L[1..N] yang terurut menaik.
29
27
10
8
76
21
1
2
3
4
5
6
Langkah 1: Index ke n = 6 sampai ke 2.
Index 6
Index (n-1) = 5
Index = 4
Index = 3
Index = 2
8
8
27
27
8
25
8
10
10
10
8
25
27
10
21
2
3
4
5
6
10
25
10
27
27
76
76
76
76
76
76
1
21
21
21
21
21
Langkah 2: Index ke n = 6 sampai ke 3
Index 6
Index (n-1) = 5
Index = 4
Index = 3
10
21
21
21
21
76
76
76
76
11. 8
10
25
27
21
76
1
2
3
4
5
6
Langkah 3: Index ke n = 6 sampai ke 4.
Index 6
Index (n-1) = 5
Index = 4
8
10
21
25
1
2
3
21
27
4
5
21
27
27
21
25
76
76
76
76
6
Langkah 4: Index ke n = 6 sampai ke 5.
Index 6
Index (n-1) = 5
8
10
21
25
27
2
3
4
5
76
76
1
76
76
27
25
27
27
6
Langkah 5: Index ke n = 6 .
Index 6
8
10
21
25
27
76
1
2
3
4
5
6
Elemen sudah urut dan proses sorting selesai
13. Contoh 3 :
Bubble Sort Disebut juga dengan metode Penukaran (Exchange Sort), yaitu metoda yang mendasarkan
pada penukaran elemen untuk mencapai keadaan urut yang diinginkan.
Algoritma Metode gelembung :
- langkah 0 : Baca vector yang akan diurutkan (dalam program utama)
- langkah 1 : Kerjakan langkah 2 untuk i = 1 sampai N-1
- langkah 2 : Kerjakan langkah 3 untuk j = 1 sampai N- i
- langkah 3 : Tes apakah A[j] > A[j +1] ? Jika ya, tukarkan nilai kedua elemen ini
- langkah 4 : Selesai
14. Contoh Program Buble Sort
program BubleShort;
uses crt;
VAR
Data
: array[1..10] of integer;
i,j,n,bantu
: integer;
BEGIN
clrscr;
Writeln('Masukkan data anda !');writeln;
Write('jumlah data anda ? ');readln(n);
writeln('Mulai memasukan data ');
for i:=1 to n do
begin
Write('Data ke-',i,' = ');
readln(data[i]);
end;
for i:=1 to N-1 do
Hasil :
Masukkan data anda !
jumlah data anda ? 5
Mulai memasukan data
Data ke-1 = 5
Data ke-2 = 3
Data ke-3 = 6
Data ke-4 = 2
Data ke-5 = 3
(2),(3),(3),(5),(6),
for j := 1 to N-i do
begin
if data[j] > data[j+1] then
begin
Bantu := data[j];
data[j] := data[j+1];
data[j+1] := Bantu;
end;
end;
for i:=1 to n do
write('(',data[i],'),');
readln;
end.
16. Analogi :
mengurutkan satu set kartu dari kartu yang bernilai paling kecil hingga yang paling besar.
Seluruh kartu diletakkan pada meja, kita sebut meja pertama, disusun dari kiri ke kanan dan a
ke bawah.
Kemudian pada meja kedua tempat meletakkan kartu yang diurutkan.
Ambil kartu pertama yang terletak pada pojok kiri atas meja pertama dan letakkan pada m
kedua.
Ambil kartu kedua dari meja pertama, bandingkan dengan kartu yang berada pada meja ked
kemudian letakkan pada urutan yang sesuai setelah perbandingan.
Proses tersebut akan berlangsung hingga seluruh kartu pada meja pertama telah diletak
berurutan pada meja kedua.
Contoh :
Jika sudah terurut 3,6,9, dan selanjutnya belum terurut 5,7,2,....
5 akan disisipkan di antara 3 dan 6, sehingga menjadi 3,5,6,9.
7 akan disisipkan di antara 6 dan 9, sehingga menjadi 3,5,6,7,9.
2 akan disisipkan sebelum 3, sehingga menjadi 2,3,5,6,7,9.
Contoh :