Searching
Struktur Data - Searching Cara untuk mengetahui ada tidaknya sebuah / lebih data dari sekumpulan data. Dua (2) hal yang dilakukan dalam searching adalah melihat dan membandingkan data yang tersedia dengan inputan pembanding. Guna mempermudah dan mempercepat searching data, biasanya dilakukan sorting terlebih dahulu terhadap kumpulan data. Struktur Data - Searching
Struktur Data - Searching Algoritma Searching Sequential Search Binary Search Interpolating Search Search with index Struktur Data - Searching
Struktur Data - Searching Sequential Search Metode pencarian data paling sederhana dan lambat. Data array yang dicari tidak perlu diurutkan terlebih dahulu. Secara garis besar metode ini dapat dijelaskan sbb: Dari array yang telah diketahui, input data yang dicari dibandingkan satu persatu mulai data urutan pertama sampai data tersebut ditemukan atau tidak ditemukan. Bila data yang dicari telah ditemukan, maka proses searching dihentikan. Bila belum ketemu, maka proses pencarian akan diteruskan sampai semua data telah dibandingkan. Bila data ditemukan, maka posisi data tersebut dicatat dan dikembalikan pada fungsi pemanggil. Struktur Data - Searching
Struktur Data - Searching Sequential Search bool SeqSearch( int* pos, int *arr, int banyak, int dicari){ for(int i = 0; i < banyak; i++){ if (arr[i] == dicari){ *pos = i; return true; } return false; Struktur Data - Searching
Struktur Data - Searching Sequential Search Dicari = 7 Dicari Return True = 11 5 15 4 9 7 10 18 20 1 0 1 2 3 4 5 6 7 8 9 = *pos Struktur Data - Searching
Sequential Search (Non Sorting) Dicari = 6 Return False Dicari 11 5 15 4 9 7 10 18 20 1 0 1 2 3 4 5 6 7 8 9 = *pos Struktur Data - Searching
Sequential Search (Sorting First) Dicari = 6 Dicari Return False 1 4 5 7 9 10 11 15 18 20 0 1 2 3 4 5 6 7 8 9 = *pos Struktur Data - Searching
Struktur Data - Searching Menambahkan data baru Biasanya algoritma searching data digunakan pada saat ada penambahan data baru, bila diinginkan data tersebut bersifat unik (tidak boleh kembar). int* larik; void Insert( bool ada, int* aa, int databaru){ int *temp1, *temp2; if(!ada){ *aa = *aa + 1; temp1 = larik; temp2 = new int[*aa]; for(int i = 0; i < *aa; i++) temp2[i] = temp1[i]; delete[] temp1; larik = temp2; larik[*aa - 1] = databaru; } Struktur Data - Searching
Mengisikan data baru pada data yang telah urut Langkah - langkah ini digunakan untuk memasukkan sebuah data pada sebuah kumpulan data yang telah urut. Bila posisi data tersebut berada di akhir array maka proses yang dilakukan seperti pada proses Insert tanpa diurutkan. Bila posisi data tersebut berada pada awal / tengah elemen array yang dicari, maka perlu dilakukan penggeseran elemen – elemen yang bernilai lebih besar dari nilai data yang dicari / data akan di-‘insert’ pada array, dengan kondisi bergeser satu. Struktur Data - Searching
Struktur Data - Searching Binary Search Lebih cepat bila dibandingkan dengan Sequential Search, karena tidak semua data yang ada perlu diperiksa. Metode ini sangat cocok bila diterapkan untuk pencarian yang melibatkan banyak sekali data. Kelemahan dari metode ini adalah, data yang akan dicari / diperiksa perlu diurutkan (di sorting) terlebih dahulu. Metode sorting yang lambat akan memperlambat proses searching. Struktur Data - Searching
Struktur Data - Searching Binary Search bool BinarySearch(int top, int *arr, int *pos, int cari){ int mid, bot = 0; while (bot <= top){ mid = (top + bot) / 2; if ( arr[mid] == cari){ *pos = mid; return true; } else if( arr[mid] < cari) bot = mid + 1; else top = mid - 1; return false; Struktur Data - Searching
Struktur Data - Searching Binary Search Struktur Data - Searching
Struktur Data - Searching Interpolating Search Binary Search sangat cepat prosesnya. Adakah yang lebih cepat Binary Search??? Ada!!! Interpolating Search. Algoritma Interpolating Search mirip dengan Binary Search, tapi menggunakan var. next sebagai pengganti mid. Bila mid = (top + bot) / 2 maka, Struktur Data - Searching
Struktur Data - Searching Interpolating Search bool interpolatingSearch(int top, int *arr, int *pos, int cari){ int next, bot = 0; while (bot <= top){ next = bot + ((cari – arr[bot])/(arr[top] – arr[bot]) * (top – bot – 1)); if ( arr[next] == cari){ *pos = next; return true; } else if( arr[next] < cari) bot = next + 1; else top = next - 1; return false; Struktur Data - Searching
Struktur Data - Searching Interpolating Search Struktur Data - Searching
Struktur Data - Searching Binary Search Lebih cepat bila dibandingkan dengan Sequential Search, karena tidak semua data yang ada perlu diperiksa. Metode ini sangat cocok bila diterapkan untuk pencarian yang melibatkan banyak sekali data. Kelemahan dari metode ini adalah, data yang akan dicari / diperiksa perlu diurutkan (di sorting) terlebih dahulu. Metode sorting yang lambat akan memperlambat proses searching. Struktur Data - Searching
Pencarian dengan Index Bila data yang sangat banyak, maka metode pencarian apapun pasti lambat. Solusi => Tabel Index. Tabel index adalah array yang menyimpan sebuah ‘key’ dari elemen data dan pointer yang menunjuk ke tempat data sesungguhnya. Tabel index, dapat mempercepat pencarian karena membatasi jumlah data yang dicari. Penggunaan tabel index sering digunakan pula untuk mencari data dengan kapasitas sangat besar, yang disimpan pada penyimpan luar (data bertipe file). Harddisk berkapasitas besar tapi lambat (mekanik) RAM cepat (electrik), tapi terbatas. Penggunaan tabel index, dapat pula mempercepat pengurutan data bertipe file, karena yang diurutkan sebenarnya adalah tabel indexnya, bukan data aslinya. Penggunaan tabel index adalah dasar dari database Struktur Data - Searching
Pencarian dengan Index No. NRP Nama Jurusan Tingkat 1 1998.1001 Amir TK D3 2 1998.1002 Ali 3 1998.1010 Badu S1 4 1999.1011 Ina 5 1999.2015 Ani MI 6 1999.2111 Damsyik 7 2000.0001 Iman 8 2000.0021 Amin 9 2000.1010 Ida 10 2001.0054 Layla 11 2001.0110 Syahri 12 2001.0911 Minah Struktur Data - Searching
Pencarian dengan Index 1 1998.1001 Amir TK D3 2 1998.1002 Ali 3 1998.1010 Badu S1 4 1999.1011 Ina 5 1999.2015 Ani MI 6 1999.2111 Damsyik 7 2000.0001 Iman 8 2000.0021 Amin 9 2000.1010 Ida 10 2001.0054 Layla 11 2001.0110 Syahri 12 2001.0911 Minah 1998 1 1999 4 2000 7 2001 10 Struktur Data - Searching
Pencarian dengan Index (pada data file) Tabel index, diloading pada RAM Data berada pada Penyimpan Luar 1001 1 1002 2 1010 3 1011 4 2015 5 2111 6 0001 7 0021 8 9 0054 10 0110 11 0911 12 1 1998.1001 Amir TK D3 2 1998.1002 Ali 3 1998.1010 Badu S1 4 1999.1011 Ina 5 1999.2015 Ani MI 6 1999.2111 Damsyik 7 2000.0001 Iman 8 2000.0021 Amin 9 2000.1010 Ida 10 2001.0054 Layla 11 2001.0110 Syahri 12 2001.0911 Minah Index dari Tabel Index 1998 1 1999 4 2000 7 2001 10 Struktur Data - Searching