Kita sudah belajar bagaimana cara menyimpan data:
Sekarang pertanyaannya: Bagaimana mencari data di dalamnya?
โ Mana lebih cepat?
Searching adalah proses menemukan lokasi data tertentu (key) di dalam sebuah koleksi data.
Contoh nyata:
Mencari secara linear/berurutan.
Mencari dengan membagi dua wilayah pencarian.
Strategi paling sederhana: Cari dari awal sampai akhir sampai ketemu atau data habis.
[10, 20, 30, 40]
Cari: 30
for i = 0 to n-1:
if data[i] == key:
return i // Ditemukan!
return -1 // Tidak ditemukan
Sangat mudah diimplementasikan dengan for loop atau while loop.
Kelebihan: Data bebas (tidak perlu urut).
Kekurangan: Lambat untuk data sangat banyak.
Bagaimana kalau kita tidak perlu mengecek satu per satu?
Binary search hanya bisa bekerja jika data sudah:
[10, 20, 30, 40, 50] // Bisa Binary Search
[40, 10, 50, 20, 30] // TIDAK BISA
while left <= right:
mid = (left + right) / 2
if data[mid] == key:
return mid
else if key < data[mid]:
right = mid - 1
else:
left = mid + 1
return -1
Buatlah program C++ yang mengimplementasikan:
sequentialSearchbinarySearchGunakan array yang sama untuk menguji keduanya (pastikan terurut untuk binary).
Modifikasi fungsi pencarianmu agar:
Bandingkan jumlah langkah tersebut untuk data yang sama!
left <= right) yang salah menyebabkan infinite loop.Pertemuan 10: Sorting Algorithms
Kita akan belajar bagaimana cara mengurutkan data secara efisien agar bisa menggunakan Binary Search!
Ada pertanyaan tentang pencarian data?