03. array statis dan searching

32
ARRAY STATIS PENCARIAN DATA ( SEARCHING) 1

Upload: muhammad-ariq-fakhrizal

Post on 16-Jan-2016

42 views

Category:

Documents


0 download

DESCRIPTION

Array and Searching

TRANSCRIPT

ARRAY STATIS

PENCARIAN DATA ( SEARCHING)

1

Sekumpulan data yang bertipe data sama yang bisa diakses lewat indeksnya.

2

Array statis direpresentasikan di memori secara kontinyu. Contoh: array Angka (1:5).

3

Angka(1)

Angka(2)

Angka(3)

Angka(4)

Angka(5)

Angka

Algoritma: Contoh:

4

Kamus:

nama_var_array:array[1..maks_array] of tipedata

Kamus:

Angka : array[1..5] of integer

Algoritma: Contoh:

5

Kamus:

Const

maks_array = ...

nama_var_array:array[1..maks_array] of tipedata

Kamus:

Const

Maks_Angka = 5

Angka : array[1..maks_Angka] of integer

Algoritma:

6

Kamus:

Const

maks_array = ...

Type

nama_type_array=array[1..maks_array] of tipedata

nama_var_array : nama_type_array

Contoh:

7

Kamus:

Const

maks_Angka = 5

Type

array_Angka = array[1..maks_Angka] of integer

Angka : array_Angka

Algoritma:

8

Kamus:

Const

maks_array = ...

Type

nama_record = record

< field_1:tipedata_1,

field_2:tipedata_2,

...

field_n:tipedata_n >

endrecord

nama_type_array=array[1..maks_array] of nama_record

nama_var_array : nama_type_array

Contoh:

9

Kamus:

Const

Maks_Mhs = 50

Type

Data_Mahasiswa = record

nim,nama:string,

nilai :integer,

indeks :char

endrecord

Mahasiswa = array[1..Maks_Mhs] of Data_Mahasiswa

Mhs : Mahasiswa

1. Penciptaan (create) 2. Traversal 3. Pencarian (searching) 4. Pengurutan (sorting) 5. Penghancuran (destroy)

10

Operasi penciptaan (create) adalah proses mempersiapkan array untuk diakses/diproses dengan asumsi elemen array diisi dengan angka 0 jika elemen arraynya berupa numerik/bilangan/angka

atau diisi dengan karakter spasi,”/”, atau ‘/’ jika berupa alphanumerik.

11

Algoritma secara umum:

12

Procedure create (Output nama_var_array:nama_type_array)

{I.S: elemen array diberi harga awal agar siap

digunakan}

{F.S: menghasilkan array yang siap digunakan}

Kamus:

indeks : integer

Algoritma:

for indeks 1 to maks_array do

nama_var_array(indeks) 0 {elemen array numerik}

endfor

EndProcedure

Operasi traversal adalah proses mengunjungi setiap elemen array satu persatu dari elemen pertama sampai elemen terakhir.

13

1. Pengisian elemen array dengan data

2. Menampilkan elemen array

3. Penambahan data di array

4. Penyisipan data di indeks tertentu pada

array

5. Penghapusan data di indeks tertentu pada

array

6. Menentukan nilai maksimum dan minimum

7. Menghitung nilai rata-rata, dsb.

14

15

Procedure traversal (I/O nama_var_array:nama_type_array)

{I.S: data array dan maksimum array sudah terdefinisi}

{F.S: menghasilkan array yang sudah diproses}

Kamus:

indeks : integer

Algoritma:

Inisialisasi {pemberian harga awal terhadap sebuah

variabel}

for indeks 1 to maks_array do

proses

endfor

Terminasi {penutupan yang harus dilakukan setelah

proses selesai}

EndProcedure

16

Procedure Isi_Angka (I/O Angka : array_Angka)

{I.S: array angka (1:5)sudah terdefinisi}

{F.S: menghasilkan array angka (1:5) yang sudah

dimasukan oleh user}

Kamus:

i : integer

Algoritma:

for i 1 to maks_Angka do

Input(Angka(i))

endfor

EndProcedure

Operasi pencarian (searching) adalah proses menemukan suatu data yang terdapat dalam suatu array. Metode Pencarian: - Sequential Search - Binary Search

17

Sequential / Linear Search: 1. Tanpa Boolean

a. Tanpa Sentinel b. Dengan Sentinel

2. Dengan Boolean

18

Tanpa boolean tanpa sentinel: 1. Tidak menggunakan variabel

boolean

2. Tidak mempunyai tambahan elemen di akhir array.

19

Tanpa boolean dengan sentinel:

1. Tidak menggunakan variabel

boolean

2. Mempunyai tambahan elemen di

akhir array untuk menyimpan

data cari apabila data cari tidak

ditemukan

20

Dengan boolean: 1. Menggunakan variabel boolean

2. Menghasilkan nilai TRUE atau

FALSE di akhir pencarian

21

Mis. diberikan data sebagai berikut: Angka

Data yang dicari : 9 - Angka(1) = 9? F - Angka(2) = 9? F - Angka(3) = 9? T

Maka data yang dicari ditemukan pada indeks ke-3

5 1 9 4 2 1 2 3 4 5

Procedure SeqSearchTanpaSentinel(Input nama_array:tipe_array) {I.S. : elemen array [1..maks_array] sudah terdefinisi} {F.S. : menampilkan data yg dicari ditemukan atau tidak

ditemukan} Kamus: i : integer data_cari : tipedata Algoritma: input(data_cari) i 1 while(nama_array (i) ≠ data_cari) and (i < maks_array) do i i + 1 endwhile if (nama_array(i) = data_cari) then output(data_cari,’ ditemukan pada indeks ke-’,i) else output(data_cari,’ tidak ditemukan’) endif EndProcedure

Mis. diberikan data sebagai berikut:

Angka

Data yang dicari : 9 - Tempatkan data yang dicari pada sentinel - Telusuri array seperti sequential search tanpa sentinel, jika data ditemukan pada sentinel, maka data yang dicari tidak ada/tidak ditemukan, tapi jika data yang dicari ditemukan bukan pada sentinel, maka data yang dicari ditemukan.

5 1 9 4 2 9 1 2 3 4 5 6

sentinel

Procedure SeqSearchSentinel(Input nama_array:tipe_array) {I.S. : elemen array [1..maks_array] sudah terdefinisi} {F.S. : menampilkan data yg dicari ditemukan atau tidak ditemukan} Kamus: i : integer data_cari : tipedata Algoritma: input(data_cari) i 1 nama_array(maks_array + 1) data_cari while (nama_array (i) ≠ data_cari) do i i + 1 endwhile if (i < maks_array+1) then output(data_cari,’ ditemukan pada indeks ke-’,i) else output(data_cari,’ tidak ditemukan’) endif EndProcedure

Mis. diberikan data sebagai berikut: Angka

Data yang dicari : 9 Proses pencariannya sama seperti proses pencarian pada metode sequential search lainnya, hanya saja melibatkan sebuah variabel lain yg bertipe boolean.

5 1 9 4 2

1 2 3 4 5

Procedure seq_search_boolean (Input nama_array:tipe_array) {I.S. : elemen array [1..maks_array] sudah terdefinisi} {F.S. : menampilkan data yg dicari ditemukan atau tidak ditemukan} Kamus: i : integer ketemu : boolean data_cari : tipedata Algoritma: input(data_cari) i 1 ketemu false while (not ketemu) and (i ≤ maks_array) do if (nama_var_array(i) = data_cari) then ketemu true else i i + 1 endif endwhile if (ketemu) then output(data_cari,’ ditemukan pada indeks ke-’,i) else output(data_cari,’ tidak ditemukan’) endif EndProcedure

1. Data harus terurut, baik secara ascending atau

descending

2. Mekanismenya adalah dengan cara membagi larik

menjadi dua bagian yaitu bagian kiri (indeks

terkecil/Ia) sampai ke indeks tengah dan bagian

kanan mulai dari indeks tengah sampai indeks

terbesar (Ib)

3. Indeks tengah (k) : (Ia+Ib) div 2 (posisi tengah larik)

28

4. Jika data yang dicari lebih kecil dari data di posisi tengah, maka pencarian dilanjutkan ke bagian kiri

5. Jika data yang dicari lebih besar dari data di posisi tengah, maka pencarian dilanjutkan ke bagian kanan

29

Data yang dicari = 7 Banyak data = 5 Angka Angka

30

3 7 12 15 29

1 2 3 4 5

Ia k Ib Bag. Kiri Bag. Kanan

3 7

1 2

Ia Ib k

Bag. Kiri Bag. Kanan

Angka Angka

31

3 7

1 2

Ia Ib k

Bag. Kiri Bag. Kanan

7

2

Ib Ia k

Angka 7 ditemukan pada indeks ke-2

32