সার্চিং অ্যালগরিদমের মধ্যে সব চেয়ে সহজ অ্যালগরিদম হচ্ছে লিনিয়ার সার্চ অ্যালগরিদম। লিনিয়ার সার্চ মানে কোনো কিছু সরল রৈখিকভাবে খোঁজা।
ধরোন একটি শপিং মলে একটি ব্লকে প্রথম সারিতে ২০ টি দোকান আছে। আপনি ১৬ নাম্বার দোকান খুঁজে বের করতে চান। তাহলে আপনি যদি ১ নাম্বার দোকান থেকে ২০ নাম্বার দোকান পর্যন্ত সরল রৈখিকভাবে খুঁজতে থাকেন তাহলে নিশ্চয়ই একটা সময় পর আপনার টার্গেট ১৬ নাম্বার দোকান খুঁজে পাবেন।
এটাই হল linear search প্রক্রিয়া।
ধরি, আমাদের কাছে একটি অ্যারে আছে
let numbers = [ 10, 12, 3, 52, 1, 25, 58, 65]
এবং আমাদের 25 সংখ্যাটি খুঁজে বের করতে হবে অর্থ্যাৎ,
target value = 25
numbers অ্যারের মধ্যে target value আছে কি না তা আমাদের খুঁজে বের করতে হবে। target value লিস্টের কততম পজিশনে আছে তা জানা নেই। target value লিস্টের প্রথম পজিশনে থাকতে পারে, মধ্যখানেও থাকতে পারে আবার একেবারে শেষ পজিশনেও থাকতে পারে।
numbers অ্যারের মধ্যে একটি লুপ চালাতে হবে। প্রতিবার লুপ চালাকালিন সময়ে কন্ডিশন চেক করতে হবে অ্যারের ইনডেক্স অ্যার টার্গেট ভ্যালূ সমান কিনা। যদি সমান হয় তাহলে সেই ইনডেক্স সংখ্যাটি রিটার্ন করবে, আর সমান না হলে অ্যারের শেষ পর্যন্ত লুপ চালবে।
আসলে লিনিয়ার সার্চ হল, অ্যারের এর প্রথম ডাটা থেকে তুলনা করা হয়। যখনি অ্যারের ডাটা এর ভ্যালুর সাথে টার্গেট ভ্যালূ মিলে যাবে, তখন অ্যারের ইনডেক্স রিটার্ন করবে।
কাজের ধাপ:
১। প্রথমে একটি ফর লুপ তৈরি করতে হবে এবং লুপটি Array.length পর্যন্ত চলবে।
২। লুপ চলাকালীন অ্যারের প্রতিটি ইনডেক্স এর ভ্যালূর সাথে টার্গেট ভ্যালূ সমান হয় কিনা যাচাই করতে হবে। যদি সমান হয়, তাহলে লুপ সেখানেই শেষ হবে, আর যদি সমান না হয়, তাহলে পরবর্তী ইনডেক্সে যাবে। যদি টার্গেট ভ্যালূ অ্যারের শেষ ইনডেক্সে থাকে তাহলে শেষ ইনডেক্স পর্যন্তই লুপ চলবে।
যদি টার্গেট ভ্যালূ অ্যারের মধ্যে একাধিকবার থাকে তাহলে যতগুলো ইন্ডেস্কে টার্গেট ভ্যালূ পাওয়া যাবে সবগুলো ইন্ডেস্ক বের করতে হবে। একে গ্লোবাল লিনিয়ার সার্চ বলা হয়। সেক্ষেত্রে আমাদের একটি এম্পটি অ্যারে নিতে হবে,
let newArray = [];
প্রতিবার ইন্ডেস্ক চেক করার সময় যদি টার্গেট ভ্যালূ পাওয়া যায় তাহলে সেই ইন্ডেস্ক (i) কে নতুন অ্যারের ভিতর পুশ করতে হবে এবং newArray কে রিটার্ন করতে হবে।
Top comments (0)