Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📘 Lesson  ·  Lesson 53

Binary Search

Binary search क्या है

Binary search sorted array में value ढूँढने का तेज़ तरीका है। हर item जाँचने के बजाय, यह बीच देखता है, फिर वो आधा फेंक देता है जिसमें target नहीं हो सकता। यह आधा करना दोहराने से item बहुत कम steps में मिल जाता है।

💡 Binary search सिर्फ़ sorted array पर चलता है — यह बीच की value से तय करता है कौन-सा आधा रखना है।

आधा करने का विचार

{1, 3, 5, 7, 9, 11} में 7 ढूँढने को: बीच देखिए (5)। चूँकि 7 > 5, जवाब दाएँ आधे में होगा, तो हम बायाँ अनदेखा करते हैं। हम छोटी range पर दोहराते हैं जब तक 7 पर न पहुँचें। हर step काम आधा कर देता है।

Java program

public class BinarySearch {
    public static void main(String[] args) {
        int[] a = {1, 3, 5, 7, 9, 11};
        int target = 7;
        int low = 0, high = a.length - 1, pos = -1;

        while (low <= high) {
            int mid = low + (high - low) / 2;
            if (a[mid] == target) { pos = mid; break; }
            else if (a[mid] < target) low = mid + 1;   // right jao
            else high = mid - 1;                       // left jao
        }
        System.out.println(pos == -1 ? "Not found" : "Found at " + pos);
    }
}
Found at 3

हम low और high range रखते हैं और बीच जाँचते हैं। बीच छोटा हो तो low दाएँ, बड़ा हो तो high बाएँ ले जाते हैं। मिलने या range खाली होने पर रुकते हैं।

Dry run

Dry Run — Binary Search: 7 dhoondhna, {1,3,5,7,9,11}
Steplowhighmida[mid]Compare with 7Kya hua
105255 < 7low = 3 (right jao)
235499 > 7high = 3 (left jao)
333377 == 7Mil gaya! pos = 3 (STOP)
💡 ऐसे समझिए

हर step बीच जाँचता है और वो आधा फेंक देता है जिसमें 7 नहीं हो सकता। Range तेज़ी से छोटी होती है (6 → 3 → 1), तो जवाब सिर्फ़ 3 steps में मिल जाता है।

Sorted क्यों ज़रूरी है

Binary search target की बीच की value से तुलना करके तय करता है कौन-सा आधा रखना है। वो तभी चलता है जब बीच के बाएँ सब छोटा और दाएँ सब बड़ा हो — यानी array sorted हो। unsorted array पर, एक आधा हटाना ठीक वही item हटा सकता है जिसे आप ढूँढ रहे हैं, गलत परिणाम देकर।

Time complexity

  • Binary search: O(log n) — हर step range आधी (sorted data चाहिए)।
  • Linear search: O(n) — हर item जाँचता है (किसी भी array पर)।
  • Space: O(1) — बस कुछ variables।

दस लाख sorted items को, binary search लगभग 20 steps चाहिए बनाम linear search को दस लाख तक।

आम गलतियाँ

  • Unsorted array पर इस्तेमाल करना। पहले sort कीजिए, वरना result गलत।
  • गलत mid formula। Overflow बचाने को low + (high - low) / 2 इस्तेमाल कीजिए।
  • low/high पर off-by-one। mid + 1 या mid - 1 पर जाइए, mid पर नहीं।
  • गलत loop condition। low <= high इस्तेमाल कीजिए, वरना आख़िरी element चूक जाते हैं।

सारांश

  • Binary search sorted array में range आधी करके value ढूँढता है।
  • बीच जाँचिए, फिर वो आधा रखिए जिसमें target हो सकता है।
  • चलने को array sorted होना चाहिए।
  • Overflow बचाने को mid = low + (high - low) / 2 इस्तेमाल कीजिए।
  • यह O(log n) है — बड़े sorted data पर linear search से बहुत तेज़।

आगे, पहले data sort कीजिए bubble sort से, या दोहराइए Java arrays।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

Binary search क्या है?
Binary search sorted array में item ढूँढने का तेज़ तरीका है। यह बीच का element जाँचता है, फिर target छोटा या बड़ा है इसके आधार पर आधा array हटा देता है, item मिलने या ख़त्म होने तक दोहराते हुए।
Binary search को array sorted क्यों होना चाहिए?
Binary search बीच की value के आधार पर तय करके काम करता है कौन-सा आधा रखना है। वो फ़ैसला तभी अर्थपूर्ण है जब data क्रम में हो। unsorted array पर, एक आधा हटाना आपके चाहे item को फेंक सकता है।
Binary search की time complexity क्या है?
यह O(log n) है, क्योंकि हर step बचे items आधे करता है। दस लाख items को, यह सिर्फ़ लगभग 20 steps लेता है, इसीलिए यह बड़े sorted data पर linear search से बहुत तेज़ है।
Binary search और linear search में क्या अंतर है?
Linear search हर element एक-एक जाँचता है (O(n)) और किसी भी array पर चलता है। Binary search बीच में कूदकर range आधी करता है (O(log n)) पर sorted array चाहिए। Binary search sorted data पर बहुत तेज़ है।
बीच का index कैसे निकालूँ?
mid = low + (high - low) / 2 इस्तेमाल कीजिए। यह (low + high) / 2 से सुरक्षित है क्योंकि low और high बहुत बड़े होने पर overflow बचाता है।
← Back to Java Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicReverse String आपकी प्रगति: 53 / 61 (87%) · Lesson 54 / 61 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें