কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে ব্লক সার্চ অ্যালগরিদম বাস্তবায়ন


ব্লক সার্চ

বাইনারি সার্চের মতোই ব্লক সার্চও একটি সর্টেড অ্যারেতে সার্চিং অ্যালগরিদম। বেসিক আইডিয়া হলো লিনিয়ার সার্চের চেয়ে কম এলিমেন্ট চেক করা ফিক্সড স্টেপে জাম্প করে বা কিছু এলিমেন্ট বাদ দিয়ে।

উদাহরণস্বরূপ:

ধরুন, arr নামে n দৈর্ঘ্যের একটি অ্যারে এবং m সাইজের একটি ব্লক (যেটি জাম্প করা হবে) আছে। তাহলে আমরা arr[0], arr[m], arr[2 * m], ..., arr[k * m] ইত্যাদি ইনডেক্সে সার্চ করব।

একবার arr[k * m] < x < arr[(k+1) * m] ইন্টারভাল পাওয়া গেলে, আমরা k * m ইনডেক্স থেকে লিনিয়ার সার্চ করে এলিমেন্ট x খুঁজে বের করব।

এই অ্যালগরিদমের টাইম কমপ্লেক্সিটি হলো:

O(√n)

উদাহরণ

নিচে কোডটি দেওয়া হলো:

const arr = [1, 4, 6, 7, 9, 12, 15, 16, 17, 23, 25, 26, 27, 31]; const target = 25; const blockSearch = (arr = [], target) => {    let { length: len } = arr;    let step = Math.floor(Math.sqrt(len));    let blockStart = 0    let currentStep = step;    while (arr[Math.min(currentStep, len) - 1] < target) {       blockStart = currentStep;       currentStep += step;       if (blockStart >= len)          return -1;    }    while (arr[blockStart] < target){       blockStart++;       if (blockStart == Math.min(currentStep, len))          return -1;    }    if (arr[blockStart] == target)       return blockStart    else       return -1; }; console.log(blockSearch(arr, target));

আউটপুট

কনসোলে নিচের আউটপুট পাওয়া যাবে:

10

  1. জাভাস্ক্রিপ্টে স্ট্রিং সার্চ করার পদ্ধতি

  2. জাভাস্ক্রিপ্টে ব্লক স্কোপিং

  3. জাভাস্ক্রিপ্টে ব্লক স্কোপ সাপোর্ট করে কি?

  4. জাভাস্ক্রিপ্টে লিনিয়ার সার্চ বাস্তবায়ন