প্রোগ্রামিংয়ে আমরা শুধু কোড লিখলেই হয় না, সেই কোড কতটা দ্রুত কাজ করে সেটাও খুব গুরুত্বপূর্ণ। এই performance বোঝার জন্যই আমরা ব্যবহার করি Big O Notation।
Big O Notation কী?
Big O Notation হলো একটি পদ্ধতি, যার মাধ্যমে আমরা বুঝতে পারি একটি অ্যালগরিদম বা কোড কত দ্রুত বা ধীরে কাজ করে, বিশেষ করে ইনপুট বড় হলে।
সহজভাবে বললে,
input যত বাড়বে, execution time কীভাবে বাড়বে — সেটাই Big O দিয়ে বোঝানো হয়।
কেন Big O গুরুত্বপূর্ণ?
ধরুন, আপনি একই কাজ করার জন্য দুইটা কোড লিখলেন।
দুটোই কাজ করছে, কিন্তু একটার সময় বেশি লাগছে।
এই পার্থক্যটা বোঝার জন্যই Big O দরকার।
এটি আপনাকে সাহায্য করে:
- Efficient algorithm বাছাই করতে
- Interview preparation করতে
- Large data handle করতে
Real-Life Example
ধরুন আপনি একটি বই খুঁজছেন:
Scenario 1: Random খোঁজা
আপনি বইগুলো এলোমেলোভাবে খুঁজছেন।
প্রতিটি বই একে একে দেখছেন।
➡️ এটি O(n) — কারণ n সংখ্যক বই হলে n বার খুঁজতে হতে পারে।
Scenario 2: Alphabetically সাজানো
বইগুলো যদি A-Z অনুযায়ী সাজানো থাকে, আপনি মাঝখান থেকে খুঁজতে শুরু করতে পারেন।
➡️ এটি O(log n) — কারণ আপনি প্রতি ধাপে অর্ধেক করে কমাচ্ছেন।
Common Big O Types
O(1) — Constant Time
এখানে ইনপুট যত বড়ই হোক, সময় একই থাকে।
উদাহরণ:
const arr = [10, 20, 30];
console.log(arr[0]); // Direct access
O(n) — Linear Time
ইনপুট যত বাড়ে, সময় তত বাড়ে।
উদাহরণ:
const arr = [10, 20, 30];
arr.forEach(item => console.log(item));
O(n²) — Quadratic Time
Nested loop থাকলে সাধারণত এই complexity হয়।
উদাহরণ:
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
console.log(i, j);
}
}
O(log n) — Logarithmic Time
প্রতি ধাপে problem size অর্ধেক হয়ে যায়।
উদাহরণ:
Binary Search
Big O সহজভাবে মনে রাখার উপায়
- O(1) → সবসময় fast
- O(log n) → খুব efficient
- O(n) → acceptable
- O(n²) → slow
- O(2ⁿ) → খুব খারাপ (avoid করা উচিত)
বাস্তব জীবনে কোথায় কাজে লাগে?
- Search algorithm (Google search)
- Sorting data
- Large database handle করা
- Backend performance optimization
শেষ কথা
Big O Notation শুরুতে একটু কঠিন মনে হতে পারে, কিন্তু এটি বুঝে ফেললে আপনি অনেক ভালোভাবে কোড optimize করতে পারবেন।
ডাটা স্ট্রাকচার শেখার পাশাপাশি Big O শিখলে আপনার problem solving skill অনেক উন্নত হবে।
SEO Tags (dev.to)
bigO #algorithms #datastructure #programming #beginners #coding #javascript #python #learncoding #computerscience
আপনার মতামত
আপনার কাছে কোনটি সবচেয়ে কঠিন মনে হয় — O(n) না O(log n)? মন্তব্যে জানাতে পারেন।
Top comments (0)