SUNANDAR 1531110
Pengertian Selection Sort
2
Cara Kerja Algoritma Selection Sort
3
Cara Kerja Algoritma Selection Sort
Secara efisien kita membagi list menjadi dua bagian yaitu bagian yang sudah
diurutkan, yang didapat dengan membangun dari kiri ke kanan dan dilakukan
pada saat awal, dan bagian list yang elemennya akan diurutkan.
4
Contoh Simulasi Algoritma Selection Sort
6
Contoh pemilihan ( if – then - else ) :
Judul : Menentukan_Bilangan_Positif
{I.S : User memasukkan sebuah nilai}
{F.S : Menampilkan hasil proses apakah nilai yang dimasukkan user
adalah bilangan positif atau bukan}
Kamus :
X : real
Algoritma :
Input (X)
IF X > 0 THEN
Output (X, “adalah bilangan positif”)
ELSE
Output (X, “bukan bilangan positif”)
7
negatip
Terapan bentuk-bentuk IF Solusi : ada beberapa cara berikut
Sebuah masalah terkadang dapat diselesaikan dengan Solusi-1 Solusi-2
berbagai cara, seperti penggunaan “if tanpa else” dan Input(bil) Input(bil)
If (bil>=0) If (bil<0)
“if dengan else”. Sebagai contoh dapat dilihat pada Output(„positip‟) Output(„negatip‟)
kasus berikut: Else Else
Kasus 7.1 : Menentukan apakah bilangan yang diinput Output(„negatip‟) Output(„positip‟)
positip atau negatif
Solusi-3 Solusi-4
Input(bil) Input(bil)
Ket „positip‟ Ket „negatip‟
If (bil<0) If (bil>=0)
Ket „negatip‟ Ket „positip
Output(Ket) Output(Ket)
Solusi-5 Solusi-6
Input(bil) Input(bil)
If (bil>=0) If (bil<0)
Output(„positip‟) Output(„negatip‟)
If (bil<0) If (bil>=0)
Output(„negatip‟) Output(„positip‟)
Solusi-7 Solusi-8
Input(bil) Input(bil)
positip bil>=0 positip bil>=0
If (positip=true) If (positip)
Output(„positip‟) Output(„positip‟)
else else
Output(„negatip‟) Output(„negatip‟)
8
3. Analisis Tiga Kasus atau lebih (IF-THEN-ELSE Bertingkat dan Struktur Case)
9
Bentuk pernyatan if seperti ini bermanfaat untuk
menyeleksi sejumlah kemungkinan tindakan.
Penyeleksian dilakukan secara bertingkat. Flowchat if
dalam if berikut :
If (kondisi-1)
If (kondisi-2)
Statement-a benar?
Kondisi-1
Ya Tidak
Else
Statement-b benar? benar?
Kondisi-2 Kondisi-3
else
Pada variasi ini, apabila kondisi-1 bernilai benar maka Ya Tidak Ya Tidak
10
cout << “M enentukan hari “ << endl;
cout << “1 = Senin 3 = Rabu 5 = Jum‟at 7
Contoh 22 Hasil M inggu “<< endl;
//* --------------------------------------------------- M enentukan hari cout << “2 = Selasa 4 = Kamis 6 = Sabtu “
---------* 1 = Senin 3 = Rabu 5 = Jum‟at << endl;
//* C ontoh 22 : P emakaian if bertingkat 7 = M inggu cout << “Kode hari [1..7] : “ ;
untuk * 2 = Selasa 4 = Kamis 6 = cin >> kode_hari;
Sabtu // P roses seleksi;
//* menentukan nama hari *
if (kode_hari = = 1)
Kode hari [1..7] : 2
//* --------------------------------------------------- cout << “Senin” << endl;
Selasa if (kode_hari = = 2)
---------* cout << “Selasa” << endl;
#include <iostream.h> if (kode_hari = = 3)
#include <conio.h> cout << “Rabu” << endl;
v oid main () if (kode_hari = = 4)
{ cout << “Kamis” << endl;
int kode_hari; if (kode_hari = = 5)
cout << “Jum‟at” << endl;
if (kode_hari = = 6)
Program diatas pertama-tama meminta kode hari cout << “Sabtu” << endl;
if (kode_hari = = 7)
dimasukkan dari keyboard. Kemudian if dan else
cout << “M inggu” << endl;
secara bertingkat akan menyeleksi nilai tersebut dan else
memeberikan nama hari cout << “Kode hari salah” << endl;
}
}
11
Contoh :
PDAM menerapkan pembayaran air minum perumahan dengan cara perhitungan sebagai
berikut :
Tarif per m3 untuk 10 m3 pertama (1-10) adalah 2.000
Tarif per m3 untuk 10 m3 kedua (11-20) adalah 3.000
Tarif per m3 untuk 10 m3 ketiga (21-30) adalah 4.000
Tarif per m3 untuk 10 m3 selanjutnya (31 ke atas) adalah 5.000
Pemakaian air dihitung minimal 10 m3 (kurang dari 10 m3 dianggap 10 m3)
Biaya administrasi bulanan sebesar 10.000
Bagaimana membuat algoritma untuk menghitung biaya tersebut?
Contoh kasus
Penggunaan air 5 m3 dengan biaya :
10 x 2.000 + 10.000 = 30.000
Penggunaan air 15 m3 dengan biaya :
10 x 2.000 + 5 x 3.000 + 10.000 = 45.000
Penggunaan air 75 m3 dengan biaya :
10 x 2.000 + 10 x 3.000 + 10 x 4.000 + 45 x 5.000 +10.000 =
325.000
Solusi :
Pemakaian air dibagi menjadi 4 area pemakaian (misal area a,b,c,d), baru dihitung total biaya
12
Solusi-1
Input(pakai)
If (pakai>30)
a 10
b 10
c 10
d pakai - 30
Else If (pakai>20)
a 10
b 10
c pakai - 20
d 0
Else If (pakai>10)
a 10
b pakai - 10
c 0
d 0
Else
a 10
b 0
c 0
d 0
biaya a * 2000 + b * 3000 + c * 4000 + d * 5000 + 10000
Output(„biaya =‟,biaya)
Ulasan solusi :
Pada solusi-1, tiap aksi dari if , terdiri dari 4 statement mengisi a,b,c
dan d. Bentuk solusi ini disederhanakan pada solusi-2 dengan cara
memberikan nilai awal sebelum masuk if.
13
Solusi-1 Solusi-2
Kasus 7.4 : Indeks Nilai Kuliah
Input(UTS,UAS,Tugas,Abs) Input(UTS,UAS,Tugas,Abs)
NAS 0.3*UTS + 0.4*UAS + NAS 0.3*UTS +
Indeks nilai sebuah matakuliah didapat dengan cara menghitung 0.2*Tugas + 0.1*ABS 0.4*UAS +
nilai akhir berdasarkan prosentase komponen-komponennya If (NAS>=85) 0.2*Tugas + 0.1*ABS
kemudian menentukan indeks nilainya. Misal digunakan
Indeks „A‟ If (NAS>=85)
ketentuan sebagai berikut:
ElseIf (NAS>=70 and NAS<85) Indeks „A‟
•Nilai Akhir dihitung dari 30% UTS, 40%UAS, 20% Tugas dan Indeks „B‟ Else If (NAS>=70)
10% kehadiran ElseIf (NAS>=55 and NAS<70) Indeks „B‟
•Indeks Nilai ditentukan berdasarkan Nilai Akhir (NA), Bila NA >= Indeks „C‟ Else If (NAS>=55)
85 maka Indeksnya A ElseIf (NAS>=40 and NAS<55) Indeks „C‟
Bila 85 > NA >= 70 maka Indeksnya B Bila 70 > NA >= 55 maka Indeks „D‟ Else If (NAS>=40)
Indeksnya C Else Indeks „D‟
Bila 55 > NA >= 40 maka Indeksnya D Bila NA < 40 maka Indeks „E‟ Else
Indeksnya E Output(„Indeks Nilai =‟,Indeks) Indeks „E‟
Ulasan solusi :
Pada solusi-2 lebih baik dari solusi-1 karena pemeriksaan kondisi yang serupa tidak dilakukan dua
kali. Pada solusi-1, pembandingan NAS dengan 85 dilakukan dua kali, yang pertama NAS>=85
dan yang kedua NAS<85 adalah pembandingan yang serupa.
14
Pernyataan Case
16
17