Algoritma Searching dengan JavaScript

Contoh implementasi algoritma searching dengan JavaScript.

Cara ini yang paling sederhana. Tinggal ngecek isi array satu persatu.

function linearSearch(arr, value){
  for(const i = 0, len = arr.length; i < len ; i++){
    if(arr[i] === value){
      return i;   
    }
  }
  
  return -1;
}

Algoritma ini dipake untuk mencari nilai dalam array yang sudah diurutkan. Caranya dengan membagi array jadi dua – kiri & kanan. Kalo nilai yang dicari lebih besar dari nilai tengah berarti nilai itu kemungkinan ada di array sebelah kanan. Sebaliknya kalo nilai yang dicari lebih kecil dari nilai tengah, kemungkinan dia ada di array sebelah kiri.

function binarySearch(arr, value) {
  let lowIndex = 0,
    highIndex = arr.length;

  while (lowIndex <= highIndex) {
    const midIndex = Math.floor((lowIndex + highIndex) / 2);
    const midValue = arr[midIndex]  
      

    if (midValue === value) {
      return midIndex;
    }

    if (value > midValue) {
      lowIndex = midIndex;
    } else {
      highIndex = midIndex;
    }

    // kalo elemennya ga ada
    if (
      highIndex - lowIndex === 1 &&
      arr[lowIndex] !== value &&
      arr[highIndex] !== value
    ) {
      return -1;
    }
  }

  return -1;
}

console.log(binarySearch([1, 2, 3, 3, 4, 5, 5, 6], 8)); // -1
console.log(binarySearch([1, 2, 3, 3, 4, 5, 5, 6], 6)); // 7