Selasa, 27 Februari 2018

Searching


Assalamualaikum.Wr.Wb


Hallo kawan, kembali bersama saya lagi dan kesempatan kali ini kita akan membahas mengenai Searching.

Saat ini kita memperlajari beberapa cara yaitu
1. Sequential Search
2. Binary Search


Tahukah kamu apa itu Sequential Search dan Binary Search ?

Sequential search adalah Teknik yang sederhana dan langsung dapat digunakan pada struktur data baik array maupun linked list. Pencarian data dilakukan secara berurutan satu per satu dari data pertama lalu data kedua dan seterusnya sampai yang dicari ditemukan. Sequential search dilakukan pada data yang acak atau tidak berurutan dan menggunakan operator pembanding.

Contoh:

X = 29

100
10
29

Apakah 100 = 29 ?
Jika tidak indeks++


Kita harus mencari mulai data pertama. Apakah 100! = 29 ? jika tidak kita kedata kedua. 




Apakah 10! = 29 ? jika tidak kita kedata berikutnya.




Apakah 29! = 29 ?
Ketemu = 29


Algoritma sequential search













Dari penulisan algoritma tersebut maka untuk mengerjakan contoh soal diatas yaitu:

Indeks = 0
Kriteria = 29

while(29! = 100 [0])
    {
      indeks++
    }
while(29! = 10 [1])
    {
      indeks++
    }
while(29! = 29 [2])
    {
      indeks++
    }

    Ketemu = x [2] );
    Ketemu = 29


Dalam sequential search terdapat kelebihan dan kekurangannya
Best dan Worst Case

Contoh:
Data = 3 6 5 1 7
Best case ketika x = 3
Worst case ketika x = 7

Disimpulkan maka, Best case terjadi jika data yang dicari berada didepan sehingga membutuhkan waktu sebentar atau minimal untuk menemukannya.
Sedangkan Worst case jika data yang dicari berada diakhir sehingga membutuhkan waktu yang banyak atau maksimal untuk menemukannya.



Setelah kita mengetahui sequential search kita akan mempelajari binary search

Binary Search adalah Teknik yang hanya dapat digunakan pada sorted array, yaitu array yang elemen-elemennya telah terurut. Pencarian data dilakukan dengan mencari data yang berada ditengah dulu. Kemudian jika data yang dicari lebih kecil dari data tengah maka memilih data sebelah kiri dan sebaliknya jika data yang dicari lebih besar dari data tengah maka memilih data yang sebelah kanan.

Contoh:








Tapi bagaimana jika datanya genap ?
Dalam binary search jika datanya genap maka cara menentukan data tengah yaitu:
(indeks pertama+indeks terakhir):2


Dalam binary search terdapat kelebihan dan kekurangannya

Best dan Worst Case
Best case jika data yang dicari terletak ditengah.
worst case jika data yang dicari tidak ditemukan.

Contoh:
Data = 5 6 9 2 8 1 7 4 3
Best case ketika x = 8(T(n)=1)
worst case ketika x = 25(T(n)=5 atau n/2)




Setelah kita memperlajari Sequential search dan Binary search kita mencoba menyelesaikan contoh soal sebagai berikut.





1. Bandingkan kecepatan antara sequential search dan binary search.
2.Disertai langkah-langkahnya.



Untuk mengerjakan data = 17
1. Sequential Kriteria = 17

     1. 17! = X[0](16) = Ya = Indeks++
     2. 17! = X[1](17) = Tidak
          Ketemu = X [1]
          Ketemu = 17

2. Binary Kriteria = 17

     1. (0 + 7) : 2 = 3,5 = 3         
          X[3] = 45








     2. X[1] = 17








Untuk mengerjakan data = 23
1. Sequential Kriteria = 23

     1. 23! = X[0](16) = Ya = Indeks++
     2. 23! = X[1](17) = Ya = Indeks++
     3. 23! = X[2](23) = Tidak
          Ketemu = X [2]
          Ketemu = 23

2. Binary Kriteria = 23

     1. (0+7):2 = 3,5 = 3
         X[3] = 45






     2. X[3] = 45
  






     3. X[2] = 23




Untuk mengerjakan data = 78
1. Sequential Kriteria = 78

     1. 78! = X[0](16) = Ya = Indeks++
     2. 78! = X[1](17) = Ya = Indeks++
     3. 78! = X[2](23) = Ya = Indeks++
     4. 78! = X[3](45) = Ya = Indeks++
     5. 78! = X[4](50) = Ya = Indeks++
     6. 78! = X[5](78) = Tidak
          Ketemu = X [5]
          Ketemu = 78

2. Binary Kriteria = 78

     1. (0+7):2 = 3,5 = 3
         X[3] = 45


     2. (4+7):2 = 5,5 = 5
         X[5] = 78








Dari dua cara berikut disimpulkan bahwa binary search adalah cara yang lebih mudah digunakan karena membutuhkan waktu minimal dengan mencari data tengah terlebih dahulu dan jika datanya genap kita dapat menggunakan cara (indeks pertama+indeks terakhir):2 untuk mendapatkan data tengahnya. Tetapi jika menggunakan sequential search dan data yang dicari berada diakhir maka kita harus mencari satu per satu dari awal dan membutuhkan waktu yang maksimal untuk mengerjakannya.

Dari sedikit materi diatas, Semoga bermanfaat.


Wassalamualaikum.Wr.Wb

Selasa, 20 Februari 2018

Nested Loop atau Perulangan Bersarang

Asslamualaikum.wr.wb

Hai! Bersama saya lagi. Kali ini kita akan membahas tentang Nested Loop atau Perulangan Bersarang.

Tahukah anda apa itu Nested Loop atau Perulangan Bersarang ?
Nested Loop atau Perulangan Bersarang adalah perulangan di dalam perulangan. Biasanya perulangan di dalam perulangan digunakan jika terdapat hubungan yang berkaikan dalam penyelesaiannya. Oke, selanjutnya kita akan mempelajari bagaimana cara penulisan nested loop atau perulangan bersarang.


Cara untuk menuliskan nested loop atau perulangan bersarang yaitu:

                   for(int i=0 ;i<=2;i++)
                      {
                        for(int j=0;j<=3;j++)
                          {
                                write(i+’,’+j)
                           }
                        }

Kita harus mempelajari beberapa hal sebagai berikut:
1. i dan j adalah vairiabel yang bisa diganti dengan abjad lainnya.
2. Menggunakan int agar hasil akhirnya bias dijumlah, dikurangi, dan sebagainya.
3. Untuk membaca  for(int i=0 ;i<=2;i++), i dimulai dari 0 dan i kurang dari sama dengan 2 yaitu            0,1,2 lalu i++ digunakan untuk perulangan selanjutnya.
4. Untuk membaca  for(int j=0 ;j<=3;j++), j dimulai dari 0 dan j kurang dari sama dengan 3 yaitu            0,1,2,3 lalu j++ digunakan untuk perulangan selanjutnya.
5. Dan untuk penulisan hasilnya write(i+’,’+j) yaitu baris,kolom maksudnya i,j.

Yang harus kita kerjakan terlebih dahulu adalah bagian kedua yaitu j.

Untuk i=0 dan j=0
i=0
j=0
0,0

Untuk i=0 dan j=1
i=0
j=1
0,1

Untuk i=0 dan j=2
i=0
j=2
0,2

Untuk i=0 dan j=3
i=0
j=3
0,3

Lalu setelah j selesai baru kita mengerjakan i.

Untuk i=1 dan j=0
i=1
j=0
1,0

Untuk i=1 dan j=1
i=1
j=1
1,1

Untuk i=1 dan j=2
i=1
j=2
1,2

Untuk i=1 dan j=3
i=1
j=3
1,3

Untuk i=2 dan j=0
i=2
j=0
2,0

Untuk i=2 dan j=1
i=2
j=1
2,1

Untuk i=2 dan j=2
i=2
j=2
2,2

Untuk i=2 dan j=3
i=2
j=3
2,3

Dari contoh diatas disimpulkan untuk cara pengerjaannya kita mengerjakan yang j terlebih dahulu setelah j selesai maka kita mengerjakan yang i dan setelah i selesai maka mengerjakan yang lainnya.


Setelah kita mengetahui cara mengerjakannya, mari kita mengerjakan beberapa contoh soal.

1. 











Kita harus mengisi tabel tersebut jika
      for(int i=0 ;i<=2;i++)
                      {
                        for(int j=0;j<=3;j++)
                          {
                                write(i+’,’+j)
                           }
                          }

Cara mengerjakannya:

i=0
j=0
X[0,0]=0
Jadi pada indeks baris 0 dan indeks kolom 0 nilainya 0 seperti pada gambar dibawah.







i=0
j=1
X[0,1]=1
Jadi pada indeks baris 0 dan indeks kolom 1 nilainya 1 seperti pada gambar dibawah.







i=0
j=2
X[0,2]=2
Jadi pada indeks baris 0 dan indeks kolom 2 nilainya 2 seperti pada gambar dibawah.








i=0
j=3
X[0,3]=3
Jadi pada indeks baris 0 dan indeks kolom 3 nilainya 3 seperti pada gambar dibawah.







i=1
j=0
X[1,0]=1
Jadi pada indeks baris 1 dan indeks kolom 0 nilainya 1 seperti pada gambar dibawah.







i=1
j=1
X[1,1]=2
Jadi pada indeks baris 1 dan indeks kolom 1 nilainya 2 seperti pada gambar dibawah.








i=1
j=2
X[1,2]=3
Jadi pada indeks baris 1 dan indeks kolom 2 nilainya 3 seperti pada gambar dibawah.







i=1
j=3
X[1,3]=4
Jadi pada indeks baris 1 dan indeks kolom 3 nilainya 4 seperti pada gambar dibawah.







i=2
j=0
X[2,0]=2
Jadi pada indeks baris 2 dan indeks kolom 0 nilainya 2 seperti pada gambar dibawah.







i=2
j=1
X[2,1]=3
Jadi pada indeks baris 2 dan indeks kolom 1 nilainya 3 seperti pada gambar dibawah.







i=2
j=2
X[2,2]=4
Jadi pada indeks baris 2 dan indeks kolom 2 nilainya 4 seperti pada gambar dibawah.







i=2
j=3
X[2,3]=5
Jadi pada indeks baris 2 dan indeks kolom 3 nilainya 5 seperti pada gambar dibawah.









2. 
 for(int i=0 ;i<=2;i++)
                      {
                        for(int j=0;j<=3;j++)
                        {
              If(j>=i)
              {
                X[i,j] = (j+i)*2;
                {
                 else
                 {
                 X[i,j] = (j-i)+5;
                            }
                           }
                          }

Cara membacanya:
Jika j lebih besar sama dengan 1 maka (j+1)*2 dan jika selain itu (j-i)+5


Misal :

i=1
j=2

Kita dapat menggunakan jika j lebih dari sama dengan i
jadi, kita menggunakan rumus (j+i)*2
(2+1)*2 = 6






i=1
j=0

Kita dapat menggunakan selain itu maka j lebih kecil dari i
jadi, kita menggunakan rumus (j-i)+5
(0-1)+5 = 4









Sedikit informasi mengenai Nested Loop atau yang disebut perulangan bersarang, Semoga Bermanfaat.

Wassalamualaikum.Wr.Wb

Selasa, 13 Februari 2018

ARRAY 2 DIMENSI

Assalamualaikum.Wr.Wb

Hai! Mari kita belajar bersama lagi.

Setelah kita mempelajari Array 1 dimensi sekarang kita mempelajari tentang Array 2 dimensi.

Array 2 dimensi merupakan pengembangan dari array 1 dimensi, jika pada array 1 dimensi hanya terdiri dari satu baris dan beberapa kolom saja maka pada array 2 dimensi terdiri dari beberapa baris dan kolom ( lebih dari satu baris dan kolom ). Jadi array 2 dimensi tersusun dalam bentuk baris dan kolom yang mana cara membacanya indeks pertama yaitu baris dan indeks kedua yaitu kolom.

Sebagai contoh Array 2 dimensi:










Lalu bagaimana cara penulisan identitas dari Array 2 dimensi ?
Nama array =  [Indeks baris, Indeks kolom]


Contoh:










Jadi cara penulisannya, Z = [0,1]



Cara Memindah Data pada Array

Penulisan untuk memindah data pada array adalah Identitas array = Data
Contoh:







Dapat disimpulkan bahwa identitas Array terletak pada array Z, Indeks baris ke-0, Indeks kolom 1, dan nilainya adalah 70.
Jadi cara penulisannya Z[0,1] = 70



Cara Mengambil Data pada Array

Variabel = Identitas
Contoh:
X = 15
V[0,0]








Jadi, Identitas array yaitu Z[0,1] diambil variabel X


Sebelum mengerjakan contoh soal kita harus mempelajari beberapa hal sebegai berikut.
1. Baris terletak pada garis horizontal sedangkan kolom pada baris vertikal.
2. Sama dengan array 1 dimensi kita harus memperhatikan data yang akan diperbarui tidak akan digunakan lagi atau sudah mengcopy sebelumya karena data yang akan dipindah tidak hilang atau hanya mengcopy saja tetapi data yang akan diperbarui akan hilang.
3. Cara penulisannya data sebelah kanan adalah data yang akan dipindah dan data sebelah kiri adalah data yang akan diperbarui.

Selanjutnya, mari kita mengerjakan contoh soal.

1)

X
0
1
2
0
12

10
1
50
25

2


5

Y
0
1
2
0
15
16
17
1

111
33
2
55
99


Ubah menjadi

X
0
1
2
0
12
10
5
1
16
25
50
2
17
55
111

Cara 1

X[0,1] = X[0,2]








Dari contoh soal diatas disimpulkan pada array X indeks baris 0 dan indeks kolom 1 harus bernilai 10 dan untuk mendapatkan nilai 10 maka pada array X indeks baris 0 dan indeks kolom 2 dipindah ke array X indeks baris 0 dan indeks kolom 1.


X[0,2] = X[2,2]







Dari contoh soal diatas disimpulkan pada array X indeks baris 0 dan indeks kolom 2 harus bernilai 5 dan untuk mendapatkan nilai 5 maka pada array X indeks baris 2 dan indeks kolom 2 dipindah ke array X indeks baris 0 dan indeks kolom 2.


X[1,2] = X[1,0]







Dari contoh soal diatas disimpulkan pada array X indeks baris 1 dan indeks kolom 2 harus bernilai 50 dan untuk mendapatkan nilai 50 maka pada array X indeks baris 1 dan indeks kolom 0 dipindah ke array X indeks baris 1 dan indeks kolom 2.


X[1,0] = Y[0,1]













Dari contoh soal diatas disimpulkan pada array X indeks baris 1 dan indeks kolom 0 harus bernilai 16 dan untuk mendapatkan nilai 16 maka pada array Y indeks baris 0 dan indeks kolom 1 dipindah ke array X indeks baris 1 dan indeks kolom 0.


X[2,0] = Y[0,2]













Dari contoh soal diatas disimpulkan pada array X indeks baris 2 dan indeks kolom 0 harus bernilai 17 dan untuk mendapatkan nilai 17 maka pada array Y indeks baris 0 dan indeks kolom 2 dipindah ke array X indeks baris 2 dan indeks kolom 0.


X[2,1] = Y[2,0]













Dari contoh soal diatas disimpulkan pada array X indeks baris 2 dan indeks kolom 1 harus bernilai 55 dan untuk mendapatkan nilai 55 maka pada array Y indeks baris 2 dan indeks kolom 0 dipindah ke array X indeks baris 2 dan indeks kolom 1.


X[2,2] = Y[1,1]













Dari contoh soal diatas disimpulkan pada array X indeks baris 2 dan indeks kolom 2 harus bernilai 111 dan untuk mendapatkan nilai 111 maka pada array Y indeks baris 1 dan indeks kolom 1 dipindah ke array X indeks baris 2 dan indeks kolom 2.


Adapun cara lain untuk mengerjakannya array X sebagai berikut.
Cara 2
X[1,2] = X[1,0]
X[0,1] = X[0,2]
X[0,2] = X[2,2]
X[1,0] = Y[0,1]
X[2,0] = Y[0,2]
X[2,1] = Y[2,0]
X[2,2] = Y[1,1]

Cara 3
X[2,0] = Y[0,2]
X[2,1] = Y[2,0]
X[1,2] = X[1,0]
X[1,0] = Y[0,1]
X[0,1] = X[0,2]
X[0,2] = X[2,2]
X[2,2] = Y[1,1]


Kita melanjutkan untuk mengerjakan array Y
2)
Y
0
1
2
0
15
16
17
1

111
33
2
55
99


X
0
1
2
0
12

10
1
50
25

2


5

Ubah menjadi

Y
0
1
2
0
111
10
17
1
25
33
33
2
55
99
50

Cara 1


Y[0,0] = Y[1,1]







Dari contoh soal diatas disimpulkan pada array Y indeks baris 0 dan indeks kolom 0 harus bernilai 111 dan untuk mendapatkan nilai 111 maka pada array Y indeks baris 1 dan indeks kolom 1 dipindah ke array Y indeks baris 0 dan indeks kolom 0.


Y[0,1] = X[0,2]













Dari contoh soal diatas disimpulkan pada array Y indeks baris 0 dan indeks kolom 1 harus bernilai 10 dan untuk mendapatkan nilai 10 maka pada array X indeks baris 0 dan indeks kolom 2 dipindah ke array X indeks baris 0 dan indeks kolom 1.


Y[1,0] = X[1,1]













Dari contoh soal diatas disimpulkan pada array Y indeks baris 1 dan indeks kolom 0 harus bernilai 25 dan untuk mendapatkan nilai 25 maka pada array X indeks baris 1 dan indeks kolom 1 dipindah ke array Y indeks baris 1 dan indeks kolom 0.


Y[1,1] = Y[1,2]







Dari contoh soal diatas disimpulkan pada array Y indeks baris 1 dan indeks kolom 1 harus bernilai 33 dan untuk mendapatkan nilai 33 maka pada array Y indeks baris 1 dan indeks kolom 2 dipindah ke array Y indeks baris 1 dan indeks kolom 1.


Y[2,2] = X[1,0]













Dari contoh soal diatas disimpulkan pada array Y indeks baris 2 dan indeks kolom 2 harus bernilai 50 dan untuk mendapatkan nilai 50 maka pada array X indeks baris 1 dan indeks kolom 0 dipindah ke array Y indeks baris 2 dan indeks kolom 2.


Dan dapat dengan beberapa cara lain untuk mengerjakan array Y .
Cara 2
Y[1,0] = X[1,1]
Y[0,0] = Y[1,1]
Y[1,1] = Y[1,2]
Y[2,2] = X[1,0]
Y[0,1] = X[0,2]

Cara 3
Y[2,2] = X[1,0]
Y[1,0] = X[1,1]
Y[0,1] = X[0,2]
Y[0,0] = Y[1,1]
Y[1,1] = Y[1,2]

Dari beberapa cara tersebut kita dapat mempelajari array 2 dimensi.
Semoga sedikit penjelasan tersebut bermanfaat.

Wassalamualaikum.Wr.Wb