๐ก Time Complexity Kya Hai?

Table of contents

Socho:
Tum ek school mein ho, aur teacher bole ki "Class ke sab students ke naam likho."
Agar class mein 5 students hai toh jaldi ho jaayega.
Agar 500 students hai, toh time zyada lagega.
Time lagna = kaam ka size ya input ke upar depend karta hai.
Isi cheez ko programming mein "Time Complexity" kehte hain:
"Input size badhne par, algorithm ko kitna time lagega?"
๐ Big O Notation (O(n), O(1), etc.)
Ye ek notation hai jo batata hai:
Best case nahi,
Exact time nahi,
Balki worst-case estimate karta hai:
"Maximum kitna time lag sakta hai?"
๐ง 1. O(1) โ Constant Time
Meaning:
Jo bhi input do, time kabhi change nahi hoga.
Example:
arr[100];
cout << arr[0]; // Bas first element print karna
Input size 10 ho ya 100000, ye same speed mein chalega.
๐ง Real Life Analogy:
- Fridge mein se paani ki bottle nikaalni hai โ hamesha ek hi time lagega, chahe fridge chhota ho ya bada.
๐ง 2. O(n) โ Linear Time
Meaning:
Jaise jaise input size badhega, time bhi proportionally badhega.
Example:
(int i = 0; i < n; i++) {
cout << i;
}
n = 10 โ 10 steps
n = 1000 โ 1000 steps
๐ง Real Life Analogy:
- Tum library mein ek book dhoond rahe ho aur har book ek ek karke check kar rahe ho.
๐ง 3. O(log n) โ Logarithmic Time
Meaning:
Input ka size har step mein aadha hota jaata hai.
Example: Binary Search
arr[] = {1,2,3,4,5,6,7,8};
int left = 0, right = 7;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == key) break;
else if (arr[mid] < key) left = mid + 1;
else right = mid - 1;
}
๐ง Real Life Analogy:
- Tum dictionary mein "Zebra" dhoond rahe ho โ tum har baar aadhi dictionary skip kar ke dekhte ho.
๐ง 4. O(nยฒ) โ Quadratic Time
Meaning:
Do loops ek ke andar ek โ jiska matlab hai har element ke liye doosre elements bhi process karne padenge.
Example:
(int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << i << "," << j;
}
}
๐ง Real Life Analogy:
- Har student ko har doosre student se handshake karna hai.
n = 3 โ (3 x 3 = 9) handshakes
๐ง 5. O(n log n) โ Linearithmic Time
Meaning:
Combination of linear + log. Sorting algorithms like Merge Sort and Quick Sort use this.
Example: Merge Sort
void mergeSort(int arr[], int l, int r) {
if (l < r) {
int m = (l + r) / 2;
mergeSort(arr, l, m); // ๐ log n (divide)
mergeSort(arr, m + 1, r); // ๐ log n (divide)
merge(arr, l, m, r); // ๐ n (merge)
}
}
๐ง Real Life Analogy:
- Tum exam papers ko pahle chhote chhote groups mein sort karte ho, fir merge karte ho.
๐ง 6. O(2โฟ) โ Exponential Time
Meaning:
Input thoda sa bhi badhe, toh time bahut badh jaata hai.
Example: Recursive Fibonacci
int fib(int n) {
if (n <= 1) return n;
return fib(n-1) + fib(n-2);
}
n = 5 โ 15 calls
n = 10 โ 177 calls ๐ตโ๐ซ
n = 30 โ 2.6 crore calls ๐คฏ
๐ง Real Life Analogy:
- Har decision par tumhe 2 choices leni ho, aur har choice par fir 2 aur choices โ explosion ho jaata hai.
๐ Quick Comparison Chart
Complexity | Type | Growth | Example |
O(1) | Constant | ๐น๐น๐น (same) | Access array element |
O(log n) | Logarithmic | ๐ (slow grow) | Binary Search |
O(n) | Linear | ๐๐๐ | Loop through array |
O(n log n) | Linearithmic | โก๐๐ | Merge/Quick Sort |
O(nยฒ) | Quadratic | ๐ฃ๐๐๐ | Nested loops |
O(2โฟ) | Exponential | ๐ฅ๐ฅ๐ฅ๐ฅ | Recursive Fibonacci |
โ Summary in 1 line:
Jitni kam time complexity, utni fast code โ aur utni zyada chance ki tumhara code scale kare.
Subscribe to my newsletter
Read articles from Arpit Radadiya directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
