Samajh bhai, ye code ekdum simple aur clean hai. Main step by step toda toda samjhata hoon:
Binary Search Concept
Binary search ek search algorithm hai jo sorted array pe kaam karta hai. Iska funda simple hai: divide and conquer. Har step pe array ko half karte jaate hain jab tak ya toh target mil jaaye ya array empty ho jaaye.
Code Breakdown
1. Input Array aur Target:
int[] arr = {1,2,3,4,5,6,7,8};
int target = 7;
arr
ek sorted array hai.target
wo number hai jo hume dhoondhna hai. Yahan7
.
2. Binary Search Function:
static int binarySearch(int[] arr, int target) {
int start = 0;
int end = arr.length - 1;
start
aurend
pointers define karte hain array ka range.- Pehle
start
hai0
(array ka pehla index). end
haiarr.length - 1
(last index).
- Pehle
3. Loop ke andar Logic:
while (start <= end) {
int mid = start + (end - start) / 2;
- Jab tak
start <= end
hai, tab tak search karte rahenge. mid
calculate karte hain:(start + end) / 2
se mid nikalta, but agar numbers bohot bade ho toh overflow ho sakta hai.- Isliye formula hai:
start + (end - start) / 2
.
4. Conditions:
if (target < arr[mid]) {
end = mid - 1;
} else if (target > arr[mid]) {
start = mid + 1;
} else {
return mid;
}
target < arr[mid]
:- Agar target mid se chhota hai, toh array ka right half ignore karo.
end = mid - 1
set kar do.
target > arr[mid]
:- Agar target mid se bada hai, toh left half ignore karo.
start = mid + 1
set kar do.
target == arr[mid]
:- Badhai ho bhai! Target mil gaya.
mid
index return karo.
- Badhai ho bhai! Target mil gaya.
5. Target Not Found:
return -1;
- Agar loop khatam ho gaya aur target nahi mila, toh
-1
return karte hain (iska matlab “not found”).
Example Dry Run:
Input:
arr = {1,2,3,4,5,6,7,8}
, target = 7
First Iteration:
start = 0
,end = 7
mid = 0 + (7 - 0) / 2 = 3
arr[mid] = 4
target > arr[mid]
→start = mid + 1 = 4
Second Iteration:
start = 4
,end = 7
mid = 4 + (7 - 4) / 2 = 5
arr[mid] = 6
target > arr[mid]
→start = mid + 1 = 6
Third Iteration:
start = 6
,end = 7
mid = 6 + (7 - 6) / 2 = 6
arr[mid] = 7
target == arr[mid]
→ Return 6
Output:
6
Target 7
ka index 6
hai.
Conclusion:
Bhai, binary search sorted arrays ke liye ekdum fast hai. O(log N) time complexity ke saath bada efficient hai. Agar array sorted nahi hai toh pehle sort karna zaroori hoga. Any confusion? 😊