PHP मा बाइनरी खोज (Binary Search) एल्गोरिथ्म: व्याख्या, चरण र उदाहरण

बाइनरी खोज एल्गोरिथ्म क्रमबद्ध एरे मा एक विशेष मान फेला पार्न को लागी एक कुशल विधि हो। यो दृष्टिकोणले एर्रेलाई साना भागहरूमा विभाजन गर्छ र खोज दायराको बीचमा रहेको मानलाई लक्ष्य मानसँग लगातार तुलना गर्छ। यदि मानहरू मेल खान्छ भने, इच्छित मान फेला पर्नेछ; अन्यथा, एल्गोरिथ्मले खोज दायरालाई संकुचित गर्न जारी राख्छ र मान फेला नपरेसम्म वा थप तत्वहरू जाँच गर्न बाँकी नभएसम्म प्रक्रिया दोहोर्याउँछ।

चरणहरू:

  1. खोज दायरा प्रारम्भ गर्नुहोस्:  एरेको left  अन्तिम स्थितिमा पहिलो स्थानबाट खोज दायरा चयन गरेर सुरु गर्नुहोस् । right
  2. मध्य बिन्दु पत्ता लगाउनुहोस्: औसत left र दायाँ स्थानहरू द्वारा मध्य बिन्दु गणना गर्नुहोस्; यो खोज दायराको मध्य बिन्दु हो।
  3. मानहरू तुलना गर्नुहोस्: मध्य बिन्दुमा रहेको मानलाई लक्ष्य मानसँग तुलना गर्नुहोस्।
  4. तुलना परिणाम ह्यान्डल गर्नुहोस्: यदि मध्य बिन्दुको मान लक्ष्य मानसँग मेल खान्छ भने, यो स्थिति फर्काउनुहोस्। यदि मध्य बिन्दुको मान लक्ष्य मान भन्दा कम छ भने, दायाँ आधा खोज्नको लागि बायाँ स्थिति मध्य + 1 मा अपडेट गर्नुहोस्। यदि मध्य बिन्दुको मान लक्ष्य मान भन्दा ठूलो छ भने, बायाँ आधा खोज्नको लागि मध्य- 1 मा दायाँ स्थिति अपडेट गर्नुहोस्।
  5. दोहोर्याउनुहोस्: चरणहरू 2 देखि 4 सम्म दोहोर्याउनुहोस् जबसम्म मान फेला पर्दैन वा त्यहाँ जाँच गर्न थप तत्वहरू छैनन् left > right

फाइदा र बेफाइदाहरू

फाइदा:

  • कुशल कार्यसम्पादन: एल्गोरिदमको समय जटिलता O(log n) हो, यसले ठूला डाटासेटहरू ह्यान्डल गर्नको लागि अत्यधिक कुशल बनाउँछ।
  • ठूला डाटासेटहरूको लागि प्रभावकारी: बाइनरी खोजले ठूला डाटासेटहरूको लागि द्रुत रूपमा जाँच गर्न तत्वहरूको संख्या घटाउन प्रभावकारी हुन्छ।

बेफाइदाहरू:

  • क्रमबद्ध एरेहरूमा मात्र लागू हुन्छ: एल्गोरिदमले क्रमबद्ध एरेहरूमा मात्र काम गर्दछ।
  • चरणहरूको चर संख्या: मान पत्ता लगाउन आवश्यक चरणहरूको संख्या एरेमा यसको स्थितिमा निर्भर गर्दछ, र यसले छेउको नजिक मानहरूको लागि धेरै चरणहरू लिन सक्छ।

उदाहरण: PHP मा क्रमबद्ध एरेमा मान १२ फेला पार्नको लागि बाइनरी खोज

function binarySearch($arr, $target) {  
    $left = 0;  
    $right = count($arr)- 1;  
  
    while($left <= $right) {  
        $mid = floor(($left + $right) / 2);  
  
        if($arr[$mid] == $target) {  
            return $mid; // Return the position of the value  
        } elseif($arr[$mid] < $target) {  
            $left = $mid + 1;  
        } else {  
            $right = $mid- 1;  
        }  
    }  
  
    return -1; // Value not found  
}  
  
$array = [2, 5, 8, 12, 15, 20, 30];  
$targetValue = 12;  
  
$result = binarySearch($array, $targetValue);  
  
if($result != -1) {  
    echo "Value $targetValue found at position $result.";  
} else {  
    echo "Value $targetValue not found in the array.";  
}  

उदाहरणको व्याख्या

  1. हामी प्रारम्भिक खोज दायरालाई पहिलो स्थानबाट  एरेको left = 0 अन्तिम स्थितिमा सुरु गर्छौं। right = 6
  2. हामी बायाँ र दायाँ स्थानहरू औसत गरेर मध्य बिन्दु(मध्य) गणना गर्छौं; mid = 3 । मध्यमा मान 12 हो।
  3. हामी) मा मानलाई mid(12 लक्ष्य मान(१२) सँग तुलना गर्छौं र मेल फेला पार्छौं, त्यसैले हामी स्थिति ३ फर्काउँछौं।
  4. एल्गोरिथ्म समाप्त हुन्छ, र हामी परिणाम आउटपुट गर्छौं "मान 12 स्थिति 3 मा फेला पर्यो।"