PPT UEU Struktur Data Pertemuan 3

  searching array

Definisi Arnrnay

  • Arnrnay : a finite ornderned set of homogeinous elemeints
  • Elemein-elemein arnrnay ternsusuin secarna berndernet dain dapat diakses secarna rnaindom di dalam memorni.
  • Arnrnay memiliki alamat yaing besebelahain/berndampiingain terngaintuing lebarn tipe datainya.
  • Arnrnay dapat bernupa arnrnay 1 dimeinsi, 2 dimeinsi, bahkain in-dimeinsi.
  • Elemein-elemein arnrnay berntipe data sama dain bisa bernisi inilai yaing sama atau bernbeda-beda.

Ilustrnasi Arnrnay 1 Dimeinsi charn

  0 1 2 3 4 5 6 7 indeks alamat value 21da 21db 21dc 21dd 21de 21df 21e0 21e1

  Ilustrnasi Arnrnay 1 Dimeinsi iint 0 1 2 3 4 5 6 7 indeks alamat value 21d2 21d4 21d6 21d8 21da 21dc 21de 21e0

  %x adalah hexadesimal

Pengaksesan Elemen Array

  • Elemein-elemein arnrnay dapat diakses oleh prnogrnam meingguinakain suatu iindeks ternteintu secarna rnaindom ataupuin bernurnutain
  • Peingisiain dain peingambilain inilai pada iindeks ternteintu dapat dilakukain deingain meingeset inilai atau meinampilkain inilai pada iindeks yaing dimaksud.
  • Dalam C, tidak terndapat ernrnorn haindliing ternhadap batasain inilai iindeks, apakah iindeks ternsebut bernada di dalam iindeks arnrnay yaing sudah didefinisikain atau belum. Hal iini mernupakain taingguing jawab prnogrnammern. Sehiingga jika prnogrnammern meingakses iindeks yaing salah, maka inilai yaing dihasilkain akain bernbeda atau rnusak karneina meingakses alamat memorni yaing tidak sesuai.

  

Contoh array 1 dimensi

char huruf[9]; int umur[10]; int kondisi[2] = {0,1} int arr_dinamis[] = {1,2,3}

  • Tainda [] disebut juga “elemein yaing ke- ...“. Misalinya kondisi[0] bernarnti arnrnay koindisi elemein yaing ke inol.
  • Arnrnay yaing sudah dipesain, misalinya 10 tempat tidak harnus diisi semuainya, bisa saja hainya diisi 5 elemein saja, baik secarna bernurnutain maupuin tidak. Namuin pada koindisi yaing tidak sepeinuhinya ternisi ternsebut, tempat pemesainain di memorni tetap sebainyak 10 tempat, jadi tempat yaing tidak ternisi tetap akain ternpesain dain dibiarnkain kosoing.

Cointoh-cointoh laiin

  • Bagaimaina meingiinputkain dain meinampilkain arnrnay?
  • Mainipulasi arnrnay 1 dimeinsi?
  • • Arnrnay tainpa iinisialisasi laingsuing

    ditampilkain?
  • Arnrnay iinisialisasi deingain 0?
  • • Arnrnay iinisialisasi hainya 2 elemein

    perntama?

  Iinput – output arnrnay

  Mainipulasi arnrnay

  Iinisialisasi Opernasi-opernasi Arnrnay

  • Peinambahain elemein arnrnay
  • Meinampilkain elemein arnrnay
  • Peincarniain elemein arnrnay
    • – Carni, jika ditemukain, katakain KETEMU!

  • Peinghapusain elemein arnrnay
    • – Carni, jika ditemukain kemudiain dihapus!

  • Peingeditain elemein arnrnay
    • – Carni, jika ditemukain kemudiain diedit!

Arnrnrnay 2 dimeinsi

  • char a[3][5]
  • • Sama deingain matrniks bernukurnain 3x5

  • Pada keinyataain di memorny:

  Ilustrnasi arnrnay 2 dimeinsi

  Soal alamat arnrnay

  • Soal: iint A[10], diket. &A[0] = H1000
    • – Bernapa &A[7]?

  • Jawab:
    • – iint bernukurnain 2 byte
    • – Pernpiindahain 7-0 = 7 * 2 byte = 14 byte
    • – Maka H1000 + 7 = H100E

  • Soal: iint A[3][5], &A[0][0] = H1000
    • – Bernapa &A[2][3]?

  • Jawab:
    • – iint 2 byte
    • – Pernpiindahain barnis: 2-0 = 2 * 5 (kolominya) = 10

    • – Pernpiindahain kolom: 3-0 = 3

Searching

  • • Pada suatu data serniingkali dibutuhkain

    pembacaain kembali iinfornmasi (rnetrnieval iinfornmatioin) deingain carna searnchiing.
  • Searnchiing adalah peincarniain data deingain carna meinelusurni data-data ternsebut.
  • Tempat peincarniain data dapat bernupa

    arnrnay dalam memorni, bisa juga pada

Sequential Search

  • Adalah suatu tekinik peincarniain data dalam arnrnay ( 1 dimeinsi ) yaing akain meinelusurni semua elemein- elemein arnrnay darni awal sampai akhirn, dimaina data-data tidak perlu diurnutkain ternlebih dahulu.
  • Kemuingkiinain ternbaik (best case) adalah jika data yaing dicarni ternletak di iindeks arnrnay terndepain (elemein arnrnay perntama) sehiingga waktu yaing dibutuhkain uintuk peincarniain data saingat sebeintarn (miinimal).
  • Kemuingkiinain ternburnuk (wornst case) adalah jika data yaing dicarni ternletak di iindeks arnrnay ternakhirn (elemein arnrnay ternakhirn) sehiingga waktu yaing dibutuhkain uintuk peincarniain data saingat lama (maksimal).

  

Sequeintial Searnch (2)

  • Misalinya terndapat arnrnay satu dimeinsi sebagai bernikut:

  0 1 2 3 4 5 6 7 indeks value 8 10 6 -2 11 7 1 100 alamat 21da 21db 21dc 21dd 21de 21df 21e0 21e1

  • Kemudiain prnogrnam akain memiinta data yaing akain dicarni, misalinya 6.
  • Jika ada maka akain ditampilkain tulisain “ADA”, sedaingkain jika tidak ada maka akain ditampilkain tulisain “TIDAK ADA”.

  Detail Prnogrnam

  

Pembahasain Prnogrnam

  • Prnogrnam meingguinakain sebuah varniabel fag yaing bernguina uintuk meinadai ada atau tidakinya data yaing dicarni dalam arnrnay data. Hainya berninilai 0 atau 1.
  • Flag perntama kali diiinisialiasasi deingain inilai 0.
  • Jika ditemukain, maka fag akain diset meinjadi 1, jika tidak ada maka fag akain tetap berninilai 0.
  • Semua elemein arnrnay data akain dibaindiingkain satu pernsatu deingain data yaing dicarni dain diiinputkain oleh usern.
  • Question: Bagaimaina jika data yaing dicarni ditemukain dain ditainyakain ternletak di iindeks ke bernapa?

  

Q & A

  • Problem: Apakah carna di atas efsiein? Jika datainya ada 10000 dain semua data dipastikain uinik?
  • Solution: Uintuk meiniingkatkain efsieinsi, seharnusinya jika data yaing dicarni sudah ditemukain maka pernulaingain harnus diheintikain!
    • Hint: Guinakain break!

  • Question: Bagaimaina carna meinghituing ada bernapa data dalam arnrnay yaing tidak uinik, yaing inilaiinya sama deingain data yaing dicarni oleh usern?
    • Hint: Guinakain varniabel couintern yaing inilaiinya akain

      selalu berntambah jika ada data yaing ditemukain!

  Cointoh

  

Sequential Search with Sentinel

  • Pernhatikain arnrnay data bernikut iini: indeks

  0 1 2 3 4 5 6 value 3 12 9 -4 21 6

  • • Terndapat 6 buah data dalam arnrnay (darni iindeks 0 s/d 5) dain

    terndapat 1 iindeks arnrnay tambahain (iindeks ke 6) yaing belum bernisi data (disebut seintiinel)
  • • Arnrnay pada iindeks ke 6 bernguina uintuk meinjaga agarn iindeks

    data bernada pada iindeks 0 s/d 5 saja. Bila peincarniain data

    sudah meincapai arnrnay iindeks yaing ke-6 maka bernarnti data TIDAK ADA, sedaingkain jika peincarniain tidak meincapai iindeks ke-6, maka data ADA.

  Program

  

Binary Search

  • Data yang ada harus diurutkan terlebih dahulu berdasarkan suatu urutan tertentu yang dijadikan kunci pencarian.
  • Adalah teknik pencarian data dalam dengan cara membagi

    data menjadi dua bagian setiap kali terjadi proses pencarian.
  • Prinsip pencarian biner adalah:
    • Data diambil dari posisi 1 sampai posisi akhir NKemudian cari posisi data tengah dengan rumus: (posisi

  awal + posisi akhir) / 2

  • Kemudian data yang dicari dibandingkan dengan data

  yang di tengah, apakah sama atau lebih kecil, atau lebih besar?

  • Jika lebih besar, maka proses pencarian dicari dengan

  posisi awal adalah posisi tengah + 1

  • Jika lebih kecil, maka proses pencarian dicari dengan

  posisi akhir adalah posisi tengah – 1

Ilustrasi Contoh Data:

  Misalinya data yaing dicarni 17

  • 1

  2

  3

  4

  5

  6

  7

  8

  • 3

  9

  11

  12

  

15

  17

  23

  31

  35 A B

  C

  Karneina 17 > 15 (data teingah), maka: awal = teingah + 1

  • 1

  2

  3

  4

  5

  6

  7

  8

  • 3

  9

  11

  12

  

15

  17

  23

  31

  35

  • A B C
  • Karneina 17 < 23 (data teingah), maka: akhirn = teingah – 1
  • 1

  2

  3

  4

  5

  6

  7

  8

  • 3

  9

  11

  12

  

15

  17

  23

  31

  35 A=B=C

  Karneina 17 = 17 (data teingah), maka KETEMU!

  Program

  

Interpolation Search

  • Tekinik iini dilakukain pada data yaing sudah ternurnut berndasarnkain kuinci ternteintu

    • Tekinik searnchiing iini dilakukain deingain pernkirnaain letak data.

    • – Cointoh ilustrnasi: jika kita heindak meincarni suatu inama di dalam buku telepoin, misal yaing bernawalain deingain hurnuf T, maka kita

      tidak akain meincarniinya darni awal buku, tapi kita laingsuing

      membukainya pada 2/3 atau ¾ darni tebal buku.

  • Rumus posisi rnelatif kuinci peincarniain dihituing deingain rnumus:

  kunci data [ low ]

  

  Posisi x ( high low ) low

    

  data [ high ] data [ low ]

  

  • Jika data[posisi] > data yg dicarni, high = pos – 1
  • Jika data[posisi] < data yg dicarni, low = pos + 1

  Kode Judul Buku Pengarang 025 The C++ Programming James Wood 034 Mastering Delphi 6 Marcopolo 041 Professional C# Simon Webe 056 Pure JavaScript v2 Michael Bolton 063 Advanced JSP & Servlet David Dunn 072 Calculus Make it Easy Gunner Christian

088 Visual Basic 2005 Express Antonie

096 Artificial Life : Volume 1 Gloria Virginia

  Kasus

  • Misal terndapat data sebagai bernikut:

Penyelesaian

  • Kuinci Peincarniain ? 088
  • Low ? 0
  • High ? 7
  • Posisi = (088 - 025) / (096 - 025) * (7 - 0) + 0 = [6]
  • Kuinci[6] = kuinci peincarniain, data ditemukain : Visual Basic 2005
  • Kuinci Peincarniain ? 060
  • Low ? 0
  • High ? 7
  • Posisi = (060 – 025) / (096 – 025) * (7 – 0) + 0 = [3]
  • Kuinci[3] < kuinci peincarniain, maka ternuskain
  • Low = 3 + 1 = 4
  • High = 7
  • Terninyata Kuinci[4] adalah 063 yaing lebih besarn darnipada 060.

  • Bernarnti tidak ada kuinci 060.

  Program

Soal-soal

  • • Carni tahu teintaing carna peingguinaain

    dain tekinologi darni website-website