Searching ka matlab hota hai kisi element ko kisi data structure (array, list, etc.) ke andar find karna. C++ mein searching ke multiple techniques hote hain. Yahaan hum sabse popular techniques ko cover karenge.
1. Linear Search
Linear Search mein ham searching linearly karte hai matlab ki array ke har ek element ko one by one check karte hai, agar element aur given value match hoti hai to ham us element ke index ko return kar dete hai. Ye sabse basic aur easy algorithm hoti hai.
How this works ?
Hume ek array/list di gayi hai aur ek target element diya gaya hai. Humein yeh find karna hai ki:
- Kya target element array mein present hai?
- Agar hai toh kis index pe hai?
Examples:
- Array: [10, 20, 30, 40, 50], Target: 30 → Found at index 2
- Array: [5, 15, 25], Target: 10 → Not found
Approach
Method: Linear Search (Basic)
- Array ke har element ko ek ek karke check karo
- Current element aur target ko compare karo
- Agar match mila toh return karo index
- Agar pure array traverse kar liya aur nahi mila toh return -1
Dry Run
Array: [10, 20, 30, 40, 50]
Target: 30
- Index 0: 10 ≠ 30 → continue
- Index 1: 20 ≠ 30 → continue
- Index 2: 30 == 30 → match found!
- Return index 2
Agar Target 60 hota:
- Sab elements check honge
- Koi element target se match nahi hoga
- Return -1
Code
#include <iostream>
using namespace std;
int linearSearch(int arr[], int n, int target) {
// Array ke har element ko check karo
for(int i = 0; i < n; i++) {
if(arr[i] == target) {
return i; // Element mil gaya
}
}
return -1; // Element nahi mila
}
int main() {
int arr[] = {10, 20, 30, 40, 50};
int n = sizeof(arr)/sizeof(arr[0]);
int target = 30;
int result = linearSearch(arr, n, target);
if(result == -1) {
cout << "Element not found in array";
}
else {
cout << "Element found at index: " << result;
}
return 0;
}
Code Explanation:
- Function Parameters:
arr[]
: Input arrayn
: Array ka sizetarget
: Jis element ko dhundhna hai
- Loop Through Array:
- Har index
i
ke liye check karo - Agar
arr[i]
target ke equal hai toh ,i
return karo
- Element Not Found:
- Pure array traverse karne ke baad bhi nahi mila toh -1 return karo
- Main Function:
- Array aur target initialize kiya
- Function call kiya
- Result ke hisab se output diya
Time Complexity Analysis
- Best Case: O(1) - Pehle hi element pe mil gaya
- Worst Case: O(n) - Last element pe mila ya nahi mila
- Average Case: O(n) - Beech mein kahi milta hai
Advantages of Linear Search
- Simple implement karna
- Sorted/Unsorted dono arrays pe kaam karta hai
- Kisi bhi data structure pe use kar sakte hain (arrays, linked lists etc.)
2. Binary Search
Binary Search ek efficient searching algorithm hai, but condition ye hai ki array must be sorted. Is algorithm ko implement karne ke liye array ka sorted hona zaruri. Hum is algorithm mein middle element ko check karte hain aur search space ko half karte jaate hain.
Is algorithm main, ek sorted array diya gaya hai aur ek target element diya gaya hai. Hame efficiently yeh find karna hai:
- Kya target element array mein present hai?
- Agar hai toh kis index pe hai?
Examples:
- Array: [10, 20, 30, 40, 50], Target: 30 → Found at index 2
- Array: [5, 15, 25], Target: 10 → Not found
Approach
Key Concept:
- Binary search tab kaam karta hai jab array sorted ho
- Har step mein search space ko aadha (half) kar dete hain
Steps:
- Initialize: ,
low = 0
,high = n-1
- Mid Point Calculate Karo: ,
mid = low + (high-low)/2
- Compare Karo:
- Agar
arr[mid] == target
→ return mid - Agar
arr[mid] < target
→ right half mein search karo (low = mid+1
) - Agar
[arr[mid] > target
→ left half mein search karo (high = mid-1
)
- Repeat: Jab tak
low <= high
- Not Found: Agar loop khatam ho gaya toh -1 return karo
Dry Run (Step-by-Step Execution)
Array: [10, 20, 30, 40, 50]
Target: 30
- Iteration 1:
- low=0, high=4
- mid=2 (30)
- arr[2] == 30 → Found!
Agar Target 35 hota:
- Iteration 1:
- low=0, high=4
- mid=2 (30)
- 30 < 35 → low=3
- Iteration 2:
- low=3, high=4
- mid=3 (40)
- 40 > 35 → high=2
- Loop Break: low > high → Not found
Code with Detailed Explanation
#include <iostream>
using namespace std;
int binarySearch(int arr[], int n, int target) {
int low = 0, high = n-1;
while(low <= high) {
int mid = low + (high - low)/2; // Overflow se bachne ka tarika
if(arr[mid] == target) {
return mid;
}
else if(arr[mid] < target) {
low = mid + 1; // Right half mein search karo
}
else {
high = mid - 1; // Left half mein search karo
}
}
return -1; // Element nahi mila
}
int main() {
int arr[] = {10, 20, 30, 40, 50};
int n = sizeof(arr)/sizeof(arr[0]);
int target = 30;
int result = binarySearch(arr, n, target);
if(result == -1) {
cout << "Element not found in array";
}
else {
cout << "Element found at index: " << result;
}
return 0;
}
Code Explanation:
- Initialization:
low
andhigh
pointers - Loop: Jab tak
low <= high
- Mid Calculation:
low + (high-low1)/2
(overflow prevention) - Comparisons:
- Equal case: return index
- Less than case: right half mein jao
- Greater than case: left half mein jao
- Not Found: Loop ke baad -1 return
Time Complexity Analysis
- Best Case: O(1) - Middle element hi target hai
- Worst/Average Case: O(log n) - Har step mein search space half ho jata hai
Advantages of Binary Search
- Linear search se bahut faster (O(log n) vs O(n))
- Large datasets ke liye perfect
Important Notes
- Pre-condition: Array sorted hona chahiye
- Overflow Prevention:
mid = low + (high-low)/2
se karna better hai
Comments