Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

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

Presentasi serupa


Presentasi berjudul: "STRUKTUR DATA (D3) - Review array - Searching (Sequential & Binary)"— Transcript presentasi:

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

2 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.

3 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];

4 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.

5 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] ?

6 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 */

7 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 */

8 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!";

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

10 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

11 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]

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

13 [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]

14 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]

15 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} };

16 ARRAY QUIZZ

17 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[];

18 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

19 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

20 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

21 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];

22 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

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

24 SEARCHING Sequential search Binary search

25 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

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

27 Metode Searching Sequential Search Binary Search

28 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

29 (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.

30 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”

31 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”. indeks value

32 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 = bestcase ketika x = 5 worstcase ketika x = 4 *x = key/data yang dicari

33 Contoh Sequential Search
Nim Nama IPK [0] Mulyadi [1] Willy Johan [2] Anthony Liberty 2.78 [3] Ferry Santoso [4] Jaya Mulya [5] Budi Santoso [6] Indra Gunawan 3.56 [7] M. Rudito W 3.44

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

35 Contoh Sequential Search
Kunci pencarian? 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

36 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.

37 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

38 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

39 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

40 Ilustrasi Contoh Data: Misalnya data yang dicari 23 (X = 23) Iterasi 1 A B C Karena 23 > 15 (data tengah), maka: awal = tengah + 1 Iterasi 2 A B C X = B (sama dengan data tengah). Output = “Data ditemukan”

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

42 Contoh Binary Search Nim Nama IPK [0] 2207023010 Mulyadi 2.94
[1] Willy Johan [2] Anthony Liberty 2.78 [3] Ferry Santoso [4] Jaya Mulya [5] Budi Santoso [6] Indra Gunawan 3.56 [7] M. Rudito W 3.44

43 Contoh Binary Search  Lo  Mid  Lo  Mid  Hi  Hi
Kunci pencarian? [0] [1] [2] [3] [4] [5] [6] [7]  Lo  Mid  Lo  Mid  Hi  Hi Ditemukan pada indeks [5]  Budi Santoso 3.01

44 Contoh Binary Search Kunci pencarian? 2207023022 [0] 2207023010
[0] [1] [2] [3] [4] [5] [6] [7]  Lo  Lo  Mid Hi, Mid Lo  Hi  Lo, Hi, Mid  Mid  Hi NIM tidak ada pada data

45 ANY QUERIES?


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

Presentasi serupa


Iklan oleh Google