লিনিয়ার বা সিকোয়েন্সিয়াল সার্চ

লিনিয়ার বা সিকোয়েন্সিয়াল সার্চ একেবারে মৌলিক একটি সার্চ এলগোরিদম। নাম অনুযায়ীই এটি একটি ডেটা স্ট্রাকচারের উপাদানগুলিকে পর্যায় ক্রমে খুঁজে খুঁজে কাংক্ষিত উপাদানটি খুজে বের করে। অবিন্যস্ত ডেটা বা এমন ডেটা যা কোন নির্দিষ্ট ক্রমে সজ্জিত নয়, তার ক্ষেত্রে এটিই একমাত্র সার্চ টেকনিক তবে এটি বেশ সময় সাপেক্ষ।



লিনিয়ার সার্চের মূল ধারণাটি খুব সহজ। আমরা একদম প্রথম উপাদান থেকে খোজা শুরু করবো। এবং যতক্ষন কাংক্ষিত উপাদানটি খুজে পাওয়া না যায় ততক্ষণ খোজ চলতে থাকবে।
লিনিয়ার সার্চ

আমাদের পরিচিত ডেটা স্ট্রাকচার array দিয়েই আমরা উদাহরণটি দিই। ধরা যাক, ১২ টি ভিন্ন সংখ্যা একটি array তে রাখা আছে। আমরা এই array তে লিনিয়ার সার্চ চালিয়ে দেখবো যে এখানে 25 সংখ্যাটি আছে কি না। ধরি, এই array তে সংখ্যাটি নেই। সেই ক্ষেত্রে 0 নম্বর ইন্ডেক্স থেকে 11 নম্বর ইন্ডেক্স পর্যন্ত সার্চ চলবে।



আবার ধরা যাক একটি array তে ১৫ টি ইন্ডেক্স এ 1-15 পর্যন্ত সংখ্যাগুলো আছে। আমাদের সেখান থেকে 9 কে খুজে বের করতে হবে। এই ক্ষেত্রেও আমরা 0 নম্বর ইন্ডেক্স থেকে খোজা শুরু করবো, এবং 8 নম্বর ইন্ডেক্স পর্যন্ত সার্চ চালিয়ে গেলে আমরা আমাদের কাংক্ষিত সংখ্যা 9 খুজে পাবো।


আমাদের কাজের ধাপ হবেঃ

১. 0 ইন্ডেক্স এ খুজে দেখা হবে।
২. যদি কাংক্ষিত সংখ্যা খুজে না পাওয়া যায় এবং এটিই শেষ ডেটা উপাদান না হয় তাহলে ইন্ডেক্স সংখ্যা ১ বৃদ্ধি পাবে এবং আবার ১ নং ধাপে ফেরত যাওয়া হবে। এটিই শেষ ডেটা উপাদান হলে সার্চ থেমে যাবে এবং খুজে পাওয়া যায় নি এমন মেসেজ দেওয়া হবে। যদি কাংক্ষিত সংখ্যা খুজে পাওয়া যায় তাহলেও সার্চ থেমে যাবে এবং খুজে পাওয়া গিয়েছে এমন মেসেজ দেওয়া হবে।

এইবার একটি সহজ কোড দেখি। ধরি array[20] একটি array যেখানে ২০ টি সংখ্যা আছে এবং আমাদের খুজে বের করতে হবে যে কত নম্বর ইন্ডেক্সে 75 সংখ্যাটি আছে।

#include<stdio.h>

int main()
{
    int i,array[20] = {2,3,5,6,33,45,6,34,57,55,75,89,4,6,7,86,54,32,99,78};

    for (i=0; i<20; i++)
    {
        if (array[i]==75)
        {
            printf("Found at index %d", i);
            break;
        }
     }
     if (i==20)
         printf("Not found in any index.");

    return 0;
}

0 comments:

Post a Comment