• Tidak ada hasil yang ditemukan

PENULISAN ALGORITMA KE DALAM PROGRAM Algoritma metode seleksi :

Dalam dokumen Modul Logika_ Algoritma (Halaman 71-90)

METODE DEVIDE AND CONQUER

PENULISAN ALGORITMA KE DALAM PROGRAM Algoritma metode seleksi :

- langkah 0 : Baca vector yang akan diurutkan (dalam program utama) - langkah 1 : Kerjakan langkah 2 sampai 4 untuk i = 1 sampai N -1

- langkah 2 : Tentukan awal = i , kerjakan langkah 3 untuk j = i +1 sampai N - langkah 3 : (Mencari data terkecil)

Tes : apakah A[awal] > A[j], jika ya maka ubah awal = j - langkah 4 : Tukarkan nilai A[awal] dengan A[i]

- langkah 5 : selesai program pascal;

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),

2. 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 yang paling kecil diapungkan “diangkat keatas” melalui proses pertukaran.

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.

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.

25 27 10 8 76 21

1 2 3 4 5 6

Langkah 1: Index ke n = 6 sampai ke 2.

Index 6 21 76 Index (n-1) = 5 8 21 76 Index = 4 8 10 21 76 Index = 3 8 27 10 21 76 Index = 2 8 25 27 10 21 76 8 25 27 10 21 76 1 2 3 4 5 6

Langkah 2: Index ke n = 6 sampai ke 3

Index 6 21 76 Index (n-1) = 5 10 21 76 Index = 4 10 27 21 76 Index = 3 10 25 27 21 76 8 10 25 27 21 76 1 2 3 4 5 6

Langkah 3: Index ke n = 6 sampai ke 4.

Index 6 21 76

Index (n-1) = 5 21 27 76 Index = 4 21 25 27 76

Contoh 2 :

8 10 21 25 27 76

1 2 3 4 5 6

Langkah 4: Index ke n = 6 sampai ke 5.

Index 6 27 76 Index (n-1) = 5 25 27 76 8 10 21 25 27 76 1 2 3 4 5 6 Langkah 5: Index ke n = 6 . Index 6 27 76 8 10 21 25 27 76 1 2 3 4 5 6

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

Contoh Program Buble Sort

program pascal; 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 := 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. 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),

3. Metode INSERTION SORT (Sisip)

Algoritma ini dianalogikan seperti mengurutkan kartu, selembar demi selembar kartu diambil dan disisipkan (insert) ke tempat yang seharusnya.

Pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan ditempatkan (diinsert) diposisi yang seharusnya.

Pada penyisipan elemen, maka elemen-elemen lain akan bergeser ke belakang

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 atas 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 meja kedua.

Ambil kartu kedua dari meja pertama, bandingkan dengan kartu yang berada pada meja kedua, kemudian letakkan pada urutan yang sesuai setelah perbandingan.

Proses tersebut akan berlangsung hingga seluruh kartu pada meja pertama telah diletakkan 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 :

METODE DEVIDE AND CONQUER

Devide and Qonquer adalah metode pemecahan masalah yang bekerja dengan membagi masalah/problem menjadi beberapa sub-masalah/sub-problem yang lebih kecil, kemudian menyhelesaikan masing-masing sub-masalah secara independen dan akhirnya menggabungkan solusi masing-masing sub masalah sehingga menjadi solusi masalah semula.

Masalah  sub masalah 1  Sub solusi 1  Solusi masalah

Sub masalah 2  sub solusi 2 Sub-masalah 3  Sub solusi 3

Algortima devide and conquer menawarkan penyederhanaan masalah dengan pendekatan 3 langkah masalah:

• pembagian masalah menjadi sekecil mungkin

• penyelesaian masalah-masalah yang dikecilkan

• penggabungan solusi untuk mendapatkan solusi optimal secara keseluruhan. tipe algoritma yang mengimplementasikan/kategori D&C antara lain merge sort

4. Metode Merge Sort

Merge sort adalah algoritma yang digunakan untuk menyusun list yang diberikan dengan cara membagi list yang diberikan menjadi dua bagian yang lebih kecil. Kedua list yang baru ini kemudian akan disusun secara terpisah. Setelah kedua buah list tersusun, maka akan dibentuk list baru yang merupakan hasil penggabungan dua buah list sebelumnya

Konsep :

1). Array yang belum terurut, dibagi menjadi separuh

– Proses diulang terus sampai ditemukan bagian terkecil

2). Hasil dari setiap proses digabungkan :

– membandingkan elemen pertama dari setiap bagian – hapus elemen terkecil dan letakan pada hasil – Ulangi semua proses sampai semua elemen terurut 3 9 4 1 5 2

List diatas dibagi menjadi dua bagian: list 1: | list 2:

3 9 4 | 1 5 2

Kedua list yang baru disusun sendiri-sendiri menjadi: list 1: | list 2:

3 4 9 | 1 2 5

Setelah itu dubentuk list baru yang merupakan gabungan kedua list tadi: List baru: 1 list 1: | list 2: 3 4 9 | 2 5 List baru: 1 2 list 1: | list 2: 3 4 9 | 5 List baru: 1 2 3 list 1: | list 2: 4 9 | 5

List baru: 1 2 3 4 list 1: | list 2: 9 | 5 List baru: 1 2 3 4 5 list 1: | list 2: 9 | kosong List baru: 1 2 3 4 5 9 list 1: | list 2: kosong | kosong

Danakhirnya akan didapat list yang sudah tersusun: List:

1 2 3 4 5 9

Contoh 2

Contoh : data berikut ini akan diurutkan

1). Divide/membagi data yang tidak terurut menjadi dua bagian

2). Ulangi sampai setiap array hanya memiliki sebuah data

3). Lakukan merge untuk memperoleh data terurut

1).

2).

4).

5).

6).

7).

9).

10).

11).

12).

14).

15).

16).

17).

19).

20).

21).

22).

24).

25).

26).

28).

29).

30).

32).

33).

34).

35).

37).

38).

LATIHAN -LATIHAN:

 Di Negara kita (Indonesia) warga Negara berumur 17 tahun sudah diharuskan mempunyai KTP, ada anak bernama Dina dimana 2 hari lagi dia berumur 17 tahun dan dia akan mencari KTP yang akan digunakan juga untuk mencari SIM A. Maka secara algoritma dengan bantuan notasi-notasi pemrograman , bagaimana/langkah apa supaya Dina bias mendapatkan KTP dan SIM.

 Menghitung banyaknya komisi yang diterima seorang salesman berdasarkan jumlah penjualan yang dicapainya. Salesman itu mendapat komisi 10% dari hasil penjualannya. Masukan algoritma adalah nama salesman dan jumlah penjualan yang dicapainya. Tampilkan ke piranti keluaran nama salesman dan besar komisi yang diperolehnya.  Misalkan kita ingin mencetak angka 1, 2, ..., 50 di layar, dengan satu angka pada setiap

baris. Buatkan algoritmanya dengan struktur pengulangan while – do, repeat – until dan for.

 Misalkan kita ingin mencetak angka 1, 2, ..., N di layar, dengan satu angka pada setiap baris, yang dalam hal ini N dibaca dari piranti masukkan. Buatkan algoritmanya dengan struktur pengulangan while – do, repeat – until dan for.

 Hitung jumlah angka dari 1 sampai N. nilai N dibaca dari papan kunci. Misalkan N = 5, maka 1 + 2 + 3 + 4 + 5 = 15. Buatkan algoritmanya dengan struktur pengulangan while – do, repeat – until dan for.

 Data bilangan dibaca dari papan kunci. Nilai rat-rata adalah jumlah seluruh bilangan debagi dengan banyak bilangan. Misalkan ada 5 buah data bilangan, yaitu 12, 10, 6, 2, 4 maka rata-ratanya adalah (12 + 10 + 6 + 2 + 4 )/5 = 34/5 = 6,8.

 Hitung rata-rata dari sejumlah data bilangan bulat tersebut. Buatkan algoritmanya dengan struktur pengulangan while – do, repeat – until dan for.

 Buatkan prosedur dan program pemanggilnya untuk menukarkan dua buah nilai di dalam peubah A dan B !

 Buatkan fungsi dan program pemanggilnya untuk menentukan nilai terbesar antara dua buah peubah bilangan bulat A dan B ! Nilai terbesar merupakan keluaran dari

prosedur.

 Buatkan fungsi dan program pemanggilnya untuk menentukan sebuah tahun kabisat atau bukan kabisat !

 Buatkan fungsi dan program pemanggilnya untuk mengembalikan angka romawi untuk angka arab yang diberikan ( hanya untuk angka arab dari 1 sampai 10) !

 Buatlah fungsi untuk menampilkan tulisan “Algoritma dan Pemrograman” sebanyak 30 kali! Ubahlah menjadi sebanyak n kali!

 Buatlah fungsi untuk menjumlahkan dua buah bilangan Tambahkanlah: mengurangi, membagi, mengkali dua buah bilangan

 Buatlah fungsi untuk menentukan bilangan terkecil dari 3 buah bilangan yangdiinputkan  Buatlah fungsi untuk mengubah nilai ke huruf (A,B, C, D, dan E)

 Buatlah fungsi untuk mengubah bilangan pecahan ke bilangan bulat!  Buatlah fungsi untuk menjumlahkan deret: 1+3+5+7+… +n

 Buatlah algoritma untuk menghitung konversi suhu.dari Celcius menjadi Reamurdan Farenheit. Input: suhu dalam Celcius Proses: R = 4/5 * C dan F = 9/5 * C + 32 Output: suhu dalam Reamur dan Farenheit

 Buatlah algoritma untuk mencari sisi miring dari suatu segitiga siku-siku, jika

diketahui panjang sisi yang membentuk sudut siku-siku. Input: a dan b, yaitu panjang sisi pembentuk sudut siku-siku Proses: c = a2 + b2 Ouput: sisi miring (c)

 Buatlah algoritma untuk menentukan suatu bilangan adalah bilangan prima.  Buatlah fungsi algoritma pencarian berurutan dengan menggunakan struktur

data single linked list. Sebutkan keuntungan dari penggunaan struktur data single linked list ini dibandingkan dengan menggunakan array

 Buatlah fungsi untuk menyisipkan (insert) data pada algoritma pencarian berurutan apabila data tersebut tidak ditemukan. Data baru diletakkan pada posisi terakhir. Implementasikan fungsi ini dengan menggunakan struktur data array dan single linked list.

 Buatlah fungsi algoritma pencarian biner dengan menggunakan struktur data single linked list

 Buatlah fungsi untuk menyisipkan (insert) data pada algoritma pencarian biner apabila data tersebut tidak ditemukan. Data baru disisipkan pada posisi yang tepat sehingga kumpulan data tersebut tetap terurut. Implementasikan fungsi ini dengan menggunakan struktur data array dan single linked list.

Dalam dokumen Modul Logika_ Algoritma (Halaman 71-90)

Dokumen terkait