STRUKTUR DATA (D3) - Review array - Searching (Sequential & Binary)

Slides:



Advertisements
Presentasi serupa
ARRAY.
Advertisements

Pemrograman Terstruktur
ARRAY 1 DIMENSI Array 1 dimensi
ARRAY STATIS DAN DINAMIS
-PERTEMUAN 5,6 – LARIK (ARRAY)
Array Dimensi Banyak Gerlan A. Manu, ST.,MKom
Pointer. Output? #include int x = 2; void misteri(int a, int b) { a = 2*x; b = y; y = a; } main() { int y; x = 5; y = 7; misteri(x, y); printf("%d %d\n",
SL-1201 Pengantar Pemrograman
ALGORITMA DAN STRUKTUR DATA
Tipe Data Bentukan Pertemuan ke-5.
SEARCHING ( PENCARIAN )
Teknik Informatika Universitas Pembangunan Jaya
Larik/Array Algoritma dan Pemrograman Muhamad Akbar.
Oleh : Sukma Murdani, S.Kom. SILABUS PENDAHULUAN Pengenalan OOP Pengenalan JAVA OOP (Object Oriented Programming) JAVA Class, Java Interface Encapsulation.
Algoritma dan Pemrograman
Pemrograman Terstruktur
ARRAY/LARIK Sumber dari : imaru.files.wordpress.com/2008/02/array-struc-pointer.ppt.
Pemrogramman Terstruktur
Array.
SLIDE OTOMATIS PINDAH DALAM WAKTU 4-5 MENIT. A:kiriB:kanan Deklarasikan sebuah variabel dengan nama ‘isi’ yang mempunyai type array of double dengan ukuran.
Dasar pemrograman “Array and Record” Kelompok 3 TIP Kelas C
Pemrograman Berorientasi Obyek
Sulidar Fitri, M.Sc Lab Meeting 13 Maret 2014
Quiz struktur data Genap 2013.
Teknik Pemrograman Terstruktur 2
ARRAY (LARIK)
Pemrograman JAVA (TIB09)
Pemrograman Berbasis Obyek Oleh Tita Karlita
ARRAY 2 Dimensi.
Array, Class, Obyek, Method danConstructor.
ARRAY.
Dasar Pemrograman ARRAY/LARIK.
Algoritma dan Struktur Data
Algoritma dan Pemrograman
Array dan String Array dan String.
IV. Array.
Pengantar Pemrograman
Algoritma dan Struktur Data
Array dan String.
Struktur Data Array dan Mapping Array
Teknik Pemrog. Terstruktur 2
Tipe Data Terstruktur Pengantar Logika dan Teknik Pemrograman
STRUKTUR DATA DIMENSIONAL ARRAY
Algoritma dan Struktur Data 1 pertemuan 7
ARRAY (Array Dua Dimensi) Pertemuan 16 Dasar Pemrograman
Array Multidimensi.
Algoritma & Pemrograman 1
Array.
Array Pertemuan ke-4.
Algoritma dan Pemrograman I Dosen : Utami Dewi Widianti
PRAKTIKUM DASAR PEMROGRAMAN
Dasar Komputer & Pemrograman 2B
ARRAY.
Array Buat algoritma untuk mencari nilai terbesar dari 5 nilai mahasiswa yang diinputkan dengan array.
MULTIDIMENSI ARRAY Struktur Data
Array dan Matriks.
KU-1072 Pengenalan Teknologi Informasi - B
Array.
Algoritma & Pemrograman 1
Algoritma dan Pemrograman I Dosen : Utami Dewi Widianti
Array (Larik)‏ Struktur Data 1 1.
Praktikum KBP 2 Array.
Array.
Tipe Data Bentukan Pertemuan ke-5.
Algoritma dan Pemrograman
Algoritma Pemrograman
SL-1201 Pengantar Pemrograman
Array.
Array.
ARRAY.
Transcript presentasi:

STRUKTUR DATA (D3) - Review array - Searching (Sequential & Binary) SULIDAR FITRI, M.Sc February 19th,2013

Definisi Array [1] Array adalah suatu set dari alokasi data, dengan jenis data yang sama untuk tiap alokasi tersebut. Setiap alokasi data disebut sebagai elemen dari array. Untuk mendeklarasikan sebuah array, tuliskan jenis data dalam array tersebut, nama array dan diikuti dengan subscript. Subscript disini adalah menyatakan jumlah elemen array yang dituliskan di dalam kurung siku Contohnya, int IntArray[25]; sebagai deklarasi sebuah array yang memiliki 25 alokasi data (elemen) dengan jenis data integer bernama IntArray.

Bentuk Umum Array (C++) Array Berdimensi Satu Array Berdimensi Dua Data_Type Array_Name[jumlah elemen data]; Data_Type Array_Name[jlh baris][jlh kolom];

Definisi Array [2] Perbedaan deklarasi variabel array dengan variabel biasa int a;  hanya 1 nilai untuk variabel a int a[10];  terdapat 10 slot nilai untuk variabel a int a[7] = {1,2,3,5,43,5,6}; Arrays dapat menggunakan nama apapun (yang dapat digunakan dalam bahasa C/C++), selama tidak memiliki nama yang sama dengan variabel tunggal lain.

Isi array Dalam bahasa C/C++, array dimulai dari 0. A[0] bernilai 5 Jika A merupakan array dengan jumlah elemen 10, maka variabel yang adalah A[0], A[1], ..., A[9] A 5 [0] 9 [1] 15 [2] 8 [3] -7 [4] 21 [5] 1 [6] -3 [7] 11 [8] -1 [9] isi array indeks array A[0] bernilai 5 A[4] bernilai -7 Berapa nilai A[6] ? Berapa nilai A[9] ?

Mengisi Nilai Elemen Array Nilai setiap elemen array dapat diisikan langsung A[0] = 100; /*Nilai elemen A[0] adalah */ B[5] = 35; /*Nilai elemen B[5] adalah */ A[0] = B[5];/*Nilai elemen A[0] adalah */ C = -99; /*C adalah variabel biasa, bukan array. C bernilai */ B[5] = C; /*Nilai elemen B[5] adalah. A[0] tetap bernilai */

Mengisi Nilai Elemen Array Nilai setiap elemen array dapat diisikan langsung A[0] = 100; /*Nilai elemen A[0] adalah 100*/ B[5] = 35; /*Nilai elemen B[5] adalah 35 */ A[0] = B[5];/*Nilai elemen A[0] adalah 35 */ C = -99; /*C adalah variabel biasa, bukan array. C bernilai -99 */ B[5] = C; /*Nilai elemen B[5] adalah -99. A[0] tetap bernilai 35 */

Array initialization [1] Bila terdapat initializer, maka dimensi array dapat diabaikan int b[] = {10, 11, 12, 13, 14}; b merupakan array yang memiliki 5 elemen karena di-inisialisasi dengan 5 angka. Perhatikan bahwa variable b dinyatakan sebagai b[] untuk menjelaskan bahwa b adalah sebuah array Jika elemen array adalah karakter, maka initializer dapat berupa string constant: char s1[7] = "Hello,"; char s2[10] = "there,"; char s3[] = "world!";

KASUS ARRAY DIMENSI 1 Buat algoritma untuk menghitung rata-rata nilai algoritma dari 10 mahasiswa dengan array

SOLUSI Int nilai_algoritma [10] Total_nilai=0 For (i=1;i<=10;i+1) { Input nilai_algoritma[i] Total_nilai=total_nilai+nilai_algoritma[i] } Rata_rata=total_nilai/10 Output rata_rata

KASUS ARRAY DIMENSI 2 Contoh deklarasi array 2 D Int nilai[2][3] Buat algoritma untuk proses input terhadap variabel array int nilai[2][3]

SOLUSI Int nilai[2][3]; For(baris=1; baris<=2; baris+1) { for (kolom=1; kolom<=3; kolom+1) input nilai[baris][kolom]; }

[0,0] [0,1] [0,2] [0,3] [0,4] [1,0] [1,1] [1,2] [1,3] [1,4] Array 1 dimensi [0] [1] [2] [3] [4] Array 2 dimensi [0,0] [0,1] [0,2] [0,3] [0,4] [1,0] [1,1] [1,2] [1,3] [1,4]

Array 3 dimensi [2,0,0] [1,0,0] [2,0,4] [1,0,4] [0,0,4] [2,1,4] [0,0,0] [0,0,1] [0,0,2] [0,0,3] [0,0,4] [0,0,4] [2,1,4] [1,1,4] [0,1,0] [0,1,1] [0,1,2] [0,1,3] [0,1,4] [0,1,4] [2,2,4] [1,2,4] [0,2,0] [0,2,1] [0,2,2] [0,2,3] [0,2,4] [0,2,4]

Initializing multidimensional array Suatu nilai dapat diberikan (assigned) kedalam elemen array dengan urutan array yang terakhir berubah terlebih dahulu ketika array sebelumnya tetap. Maka array: int theArray[5][3] memiliki urutan 3 elemen pertama bagian dari theArray[0]; kemudian 3 elemen berikutnya adalah bagian dari theArray[1]; dst. Untuk meng-initialize array dapat dilakukan dengan: int theArray[5][3] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }; Atau untuk kejelasan dapat digunakan tambahan kurung kurawal: int theArray[5][3] = { {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12}, {13,14,15} };

ARRAY QUIZZ

1.Which of the following declares an array of int named img? a. int img; b. int[] img; c. int img[]; d. int img = int[];

2. What are the legal indexes for the array ar, given the following declaration: int ar[] = {2, 4, 6, 8 } a. 0, 1, 2, 3 b. 1, 2, 3, 4 c. 2, 4, 6, 8 d. 0, 2, 4. 6

3. What is the output of the following code fragment: int ar[] = {2, 4, 6, 8 }; cout<<( ar[0] + " " + ar[1] ); a. 2 6 b. 8 c. 2 4 d. 6 8

4. What is the output of the following code fragment: int ar[] = {2, 4, 6, 8 }; ar[0] = 23; ar[3] = ar[1]; cout<<(( ar[0] + " " + ar[3] ); a. 23 2 b. 2 8 c. 31 d. 23 4

5. Which of the following declares an array of MULTIDIMENSIONAL ARRAY A. Int numb[2]; B. Int numb[]; C. Int numb[3][3][3]; D. Int numb[3,3,3];

6. What is the index number of the last element of an array with 29 elements? A. 29 B. 28 C. 0 D. Programmer-defined

SEARCH (pencarian) Goal: Dapat memahami konsep dan algoritma proses pencarian data (searching)

SEARCHING Sequential search Binary search

Searching Adalah proses mendapatkan (retrieve) information berdasarkan kunci (key) tertentu dari sejumlah informasi yang telah disimpan Kunci (key) digunakan untuk melakukan pencarian record yang diinginkan didalam suatu list

Searching Single match Multiple match Siapa mahasiswa dengan Nim 0800123456 Multiple match Siapa saja yang mendapat nilai Algoritma >= 85

Metode Searching Sequential Search Binary Search

Sequential Search Merupakan teknik yang sederhana dan langsung dapat digunakan pada struktur data baik array maupun linked- list. Pencarian data secara urut mulai dari data pertama sampai kunci yang dicari ditemukan atau sampai seluruh data telah dicari dan tidak ditemukan Dilakukan pada data yang tidak terurut

(1) Sequential Search Disebut juga linear search atau Metode pencarian beruntun. Tidak efisien untuk data yang list yang besar Adalah suatu teknik pencarian data yang akan menelusuri tiap elemen satu per-satu dari awal sampai akhir. Data awal = tidak harus dalam kondisi terurut.

Algoritma Sequential Search Input x (data yang dicari) Bandingkan x dengan data ke-i sampai n Jika ada data yang sama dengan x maka cetak pesan “Ada” Jika tidak ada data yang sama dengan x cetak pesan “tidak ada”

Ilustrasi Sequential Search Misalnya terdapat array satu dimensi sebagai berikut: Kemudian program akan meminta data yang akan dicari, misalnya 6 (x = 6). Iterasi : 6 = 8 (tidak!) 6 = 10 (tidak!) 6 = 6 (Ya!) => output : “Ada” pada index ke-2 Jika sampai data terakhir tidak ditemukan data yang sama maka output : “ data yang dicari tidak ada”. 8 10 6 -2 11 7 1 100 0 1 2 3 4 5 6 7 indeks value

Best & Worst Case Best case : jika data yang dicari terletak di depan sehingga waktu yang dibutuhkan minimal. Worst case : jika data yang dicari terletak di akhir sehingga waktu yang dibutuhkan maksimal. Contoh : DATA = 5 6 9 2 8 1 7 4 bestcase ketika x = 5 worstcase ketika x = 4 *x = key/data yang dicari

Contoh Sequential Search Nim Nama IPK [0] 2207023006 Mulyadi 2.94 [1] 2207023004 Willy Johan 3.15 [2] 2207023003 Anthony Liberty 2.78 [3] 2207023007 Ferry Santoso 3.37 [4] 2207023005 Jaya Mulya 2.93 [5] 2207023001 Budi Santoso 3.01 [6] 2207023008 Indra Gunawan 3.56 [7] 2207023002 M. Rudito W 3.44

Contoh Sequential Search Kunci pencarian? 2207023007 NIM[0] == kunci?  tidak NIM[1] == kunci?  tidak NIM[2] == kunci?  tidak NIM[3] == kunci?  ya  Ferry Santoso, 3.37

Contoh Sequential Search Kunci pencarian? 2207023010 NIM[0] == kunci?  tidak NIM[1] == kunci?  tidak NIM[2] == kunci?  tidak NIM[3] == kunci?  tidak NIM[4] == kunci?  tidak NIM[5] == kunci?  tidak NIM[6] == kunci?  tidak NIM[7] == kunci?  tidak Semua data telah di cari, kunci tidak ditemukan

Binary Search Pencarian data dimulai dari pertengahan data yang telah terurut Jika kunci pencarian lebih kecil daripada kunci posisi tengah, maka kurangi lingkup pencarian pada separuh data pertama Begitu juga sebaliknya jika kunci pencarian lebih besar daripada kunci tengah, maka pencarian ke separuh data kedua Teknik Binary Search hanya dapat digunakan pada sorted array, yaitu array yang elemen-elemennya telah terurut.

Posisi tengah = (posisi awal + posisi akhir) / 2 (2) Binary Search Lebih cepat dari sequential search Teknik pencarian = data dibagi menjadi dua bagian untuk setiap kali proses pencarian. Data awal harus dalam kondisi terurut. Sehingga harus dilakukan proses sorting terlebih dahulu untuk data awal. Mencari posisi tengah : Posisi tengah = (posisi awal + posisi akhir) / 2

Algoritma Binary Search Data diambil dari posisi awal 1 dan posisi akhir N Kemudian 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 data sama, berarti ketemu. Jika lebih besar, maka ulangi langkah 2 dengan posisi awal adalah posisi tengah + 1 Jika lebih kecil, maka ulangi langkah 2 dengan posisi akhir adalah posisi tengah – 1

Algoritma Binary Search N: banyak record array x 1. kiri = 0 dan kanan = N-1 2. tengah = (kiri+kanan)/2 3. jika x[tengah]=kunci maka indeks = tengah. Selesai 4. jika x[tengah]<kunci maka kiri = tengah+1 5. jika x[tengah]>kunci maka kanan = tengah-1 6. jika kiri<kanan dan x[tengah]<>kunci maka ulangi mulai dari 2 7. jika x[tengah]<>kunci maka indeks=-1 8. selesai

Ilustrasi Contoh Data: Misalnya data yang dicari 23 (X = 23) Iterasi 1 0 1 2 3 4 5 6 7 8 3 9 11 12 15 17 23 31 35 A B C Karena 23 > 15 (data tengah), maka: awal = tengah + 1 Iterasi 2 0 1 2 3 4 5 6 7 8 A B C X = B (sama dengan data tengah). Output = “Data ditemukan”

Best & Worst Case Best case : jika data yang dicari terletak di posisi tengah. Worst case : jika data yang dicari tidak ditemukan. Contoh : DATA = 5 6 9 2 8 1 7 4 3 bestcase ketika x = 8 (T(n)=1) worstcase ketika x = 25 (T(n) = 5 atau n/2) *x = key/data yang dicari

Contoh Binary Search Nim Nama IPK [0] 2207023010 Mulyadi 2.94 [1] 2207023020 Willy Johan 3.15 [2] 2207023030 Anthony Liberty 2.78 [3] 2207023040 Ferry Santoso 3.37 [4] 2207023050 Jaya Mulya 2.93 [5] 2207023060 Budi Santoso 3.01 [6] 2207023070 Indra Gunawan 3.56 [7] 2207023080 M. Rudito W 3.44

Contoh Binary Search  Lo  Mid  Lo  Mid  Hi  Hi Kunci pencarian? 2207023060 [0] 2207023010 [1] 2207023020 [2] 2207023030 [3] 2207023040 [4] 2207023050 [5] 2207023060 [6] 2207023070 [7] 2207023080  Lo  Mid  Lo  Mid  Hi  Hi Ditemukan pada indeks [5]  Budi Santoso 3.01

Contoh Binary Search Kunci pencarian? 2207023022 [0] 2207023010 [0] 2207023010 [1] 2207023020 [2] 2207023030 [3] 2207023040 [4] 2207023050 [5] 2207023060 [6] 2207023070 [7] 2207023080  Lo  Lo  Mid Hi, Mid Lo  Hi  Lo, Hi, Mid  Mid  Hi NIM 2207023022 tidak ada pada data

ANY QUERIES?