পাইথনে বাইনারি সার্চ

একটা সর্টেড লিস্টে একটা আইটেম আছে কিনা, তা খুঁজে দেখার জন্য বাইনারি সার্চ ব্যবহার করা হয়। যদি থেকে থাকে, তাহলে ঐ আইটেমের ইনডেক্স রিটার্ণ করে। এর আগে আমরা লিনিয়ার সার্চ সম্পর্কে জেনেছি। বাইনারি সার্চ লিনিয়ার সার্চ থেকে দ্রুত কাজ করে। যেমন 1, 3, 4, 5 , 7 , 9 , 12 এই লিস্টে 7 বা … Read more

পাইথনে কুইক সর্ট

মার্জ সর্টের মত কুইক সর্টও ডিভাইড এবং কনকার কৌশল ব্যবহার করে কোন লিস্টকে সর্ট করে। কুইক সর্ট নিচের মত করে কাজ করেঃ কুইক সর্টে কোন লিস্টকে সাব লিস্টে ভাগ করা হয়। এই ভাগ করার জন্য লিস্ট থেকেই একটা ইলিমেন্ট নেওয়া হয় পিভেট (pivot) ইলিমেন্ট হিসেবে। এই পিভেট ইলিমেন্ট এমন ভাবে লিস্টের মাঝে রাখা হয়, যেন … Read more

পাইথন মার্জ সর্ট

খুবি জনপ্রিয় একটা সর্টিং অ্যালগরিদম হচ্ছে মার্জ সর্ট। এটি ডিভাইড এবং কনকার অ্যালগরিদম স্ট্রেটেজি ফলো করে কোন লিস্ট সাজিয়ে দেয়। ডিভাইড এবং কনকার স্ট্রেটেজিঃ ডিভাইড এবং কনকার স্ট্রেটেজিতে একটা বড় সমস্যাক ছোট ছোট ভাগে ভাগ করা হয়। এরপর ঐ ছোট ছোট অংশ গুলোকে সবার আগে সমাধান করা হয়। পরিশেষে সমাধানকৃত ছোট অংশ গুলো একত্র করে … Read more

পাইথনে সিলেকশন সর্ট

সিলেকশন সর্টঃ বাবল সর্টের মত আরেকটা সহজ সর্টিং অ্যালগরিদম হচ্ছে সিলেকশন সর্ট। সিলেকশন সর্টে প্রতিটা ইটারেশনে মিনিমাম বা ম্যাক্সিমাম নাম্বার খুঁজে বের করে সর্টেড লিস্টের নির্দিষ্ট পজিশনে রাখা হয়। যদি আমরা ছোট থেকে বড় সংখ্যার জন্য সিলেকশন সর্ট ব্যবহার করি, তাহলে সিলেকশন সর্টের ধাপ গুলো হবেঃ প্রথম ধাপঃ লিস্টের প্রথম সংখ্যাকে মিনিমাম হিসেবে সেট করা। … Read more

পাইথনে রিকার্শন

রিকারশনঃ কোন কিছু যদি নিজেকে নিজে পুনরায় ডাকে, তাই হচ্ছে রিকারশন। এটি মূলত একটা প্রসেস, যেখানে প্রথমে কোন একটা সমস্যার ছোট এবং সহজ সমাধান বের করা হয়। তারপর ঐ ছোট সমাধানের উপর ভিত্তি করে বাকি অংশ গুলো সমাধান করা হয়। সেলুনে গেলে যখন আমরা দাঁড়াই, তখন সামনে পেছনে দুই পাশেই আয়না থাকে। এর ফলে নিজের … Read more

পাইথনে লিঙ্কড লিস্ট রিপ্রেজেন্টেশন এবং ইমপ্লিমেন্টেশন

ল্লিঙ্কড লিস্ট হচ্ছে লিস্টের মত আরেকটা ডেটা স্ট্র্যাকচার। লিঙ্কড লিস্টে আইটেম গুলো একটা আরেকটার সাথে কানেক্টেড থাকে। অনেকটা চেইনের মত। লিঙ্কড লিস্ট মূলত অনেক গুলো নডের সমষ্টি। এখন জিজ্ঞেস করতে পারেন নড কি। নডকে চিন্তা করতে পারেন একটা বক্সের মত। যার মধ্যে দুইটা খোপ থাকে। এই খোপের একটাতে থাকে ডেটা, আরেকটাতে থাকে পরবর্তী ডেটা মেমরির … Read more

পাইথনে গ্রাফ রিপ্রেজেন্টেশন এবং ইমপ্লিমেন্টেশন

গ্রাফঃ আমাদের এমন কিছু ডেটা থাকতে পারে, যেগুলোকে ক্রমানুসারে রাখা যায় না। কিন্তু একটা ডেটা আরেকটা ডেটার সাথে র‍্যানন্ডমলি কানেক্টেড। এমন ডেটা স্টোর করার জন্য দরকার পড়ে গ্রাফ ডেটা স্ট্রাকচারের। যেমন ম্যাপের কথা ধরতে পারি। ম্যাপের প্রতিটা শহর একটা আরেকটার সাথে কানেক্টেড থাকে। এই ম্যাপ ডেটার মত ডেটা গুলো কম্পিউটারে স্টোর করার জন্য যে ডেটা … Read more

পাইথনে ট্রি – ট্রি / Tree ডেটা স্ট্রাকচার

আমরা স্ট্যাটিক ডেটা স্ট্রাকচার লিস্ট, স্ট্যাক, কিউ ইত্যাদি দেখেছি। দেখেছি ডাইনামিক ডেটা স্ট্রাকচার যেমন লিঙ্কড লিস্ট। যা থেকে সহজেই ডাইন্যামিক্যালি কোন আইটেম এড বা রিমুভ করা যায়। এগুলো দিয়ে অনেক ধরনের সমস্যা সমাধান করা যায়। তবে এগুলোর একটা সমস্যা হচ্ছে এই ডেটা স্ট্রাকচার গুলো হচ্ছে সিকোয়েনশিয়াল ডেটা স্ট্র্যাকচার। মানে ডেটা গুলো সিরিয়ালি স্টোর করে রাখে। … Read more

পাইথনে কিউ – কিউ / Queue ডেটা স্ট্রাকচার

কিউঃ স্ট্যাকের মত আরেকটা লিনিয়ার ডেটা স্ট্যাকচার হচ্ছে কিউ। কিউ FIFO রুল ফলো করে ডেটা রাখা হয়। FIFO এর পূর্ণরুপ হচ্ছে First In First Out। মানে যে আইটেমটা সবার আগে রাখব, তাই সবার আগে বের করতে হবে। সৎ ডেটা স্ট্র্যাকচার! ঘুষের কারবার নেই! দৈনন্দিন জীবনে প্রায় প্রতিদিনই আমাদের অজান্তেই কিউ ডেটা স্ট্র্যাকচার ব্যবহার করছি। পিজ্জা … Read more

পাইথনে স্ট্যাক – স্ট্যাক / Stack ডেটা স্ট্রাকচার

স্ট্যাক কিঃ স্ট্যাক / Stack হচ্ছে লিনিয়ার ডেটা স্ট্র্যাকচার। স্ট্যাক কিছুটা অ্যারের মতই। তবে এখানে LIFO স্ট্র্যাকচারে ডেটা গুলো রাখা হয়। LIFO এর পূর্ণরুপ হচ্ছে Last In First Out। যেমন ধরি প্লেটের স্ট্যাক। রান্না ঘরে সাধারণত প্লেট গুলো পরিষ্কার করার পর একটার উপর আরেকটা রাখা হয়। প্লেটের স্ট্যাকে যে প্লেটটা সবার শেষে রাখে, তাই তো … Read more