(Binary Search) PHP માં બાઈનરી સર્ચ અલ્ગોરિધમ: સમજૂતી, પગલાં અને ઉદાહરણ

દ્વિસંગી શોધ અલ્ગોરિધમ એ સૉર્ટ કરેલ એરેમાં ચોક્કસ મૂલ્ય શોધવા માટેની એક કાર્યક્ષમ પદ્ધતિ છે. આ અભિગમ એરેને નાના ભાગોમાં વિભાજિત કરે છે અને લક્ષ્ય મૂલ્ય સાથે શોધ શ્રેણીની મધ્ય સ્થાને મૂલ્યની સતત તુલના કરે છે. જો મૂલ્યો મેળ ખાય છે, તો ઇચ્છિત મૂલ્ય મળે છે; અન્યથા, અલ્ગોરિધમ શોધ શ્રેણીને સાંકડી કરવાનું ચાલુ રાખે છે અને જ્યાં સુધી મૂલ્ય ન મળે અથવા તપાસ કરવા માટે વધુ ઘટકો બાકી ન રહે ત્યાં સુધી પ્રક્રિયાને પુનરાવર્તિત કરે છે.

પગલાં:

  1. શોધ શ્રેણી શરૂ કરો: પ્રથમ સ્થાનથી  એરેની left  છેલ્લી સ્થિતિ સુધી શોધ શ્રેણી પસંદ કરીને પ્રારંભ કરો. right
  2. મધ્ય બિંદુ શોધો: સરેરાશ left અને જમણી સ્થિતિ દ્વારા મધ્યમ બિંદુની ગણતરી કરો; આ શોધ શ્રેણીનો મધ્ય બિંદુ છે.
  3. મૂલ્યોની તુલના કરો: લક્ષ્ય મૂલ્ય સાથે મધ્યમ બિંદુ પરના મૂલ્યની તુલના કરો.
  4. હેન્ડલ સરખામણી પરિણામ: જો મધ્ય બિંદુ પરનું મૂલ્ય લક્ષ્ય મૂલ્ય સાથે મેળ ખાતું હોય, તો આ સ્થિતિ પરત કરો. જો મધ્ય બિંદુ પરનું મૂલ્ય લક્ષ્ય મૂલ્ય કરતાં ઓછું હોય, તો જમણા અડધાને શોધવા માટે ડાબી સ્થિતિને મધ્યમ + 1 પર અપડેટ કરો. જો મધ્ય બિંદુ પરનું મૂલ્ય લક્ષ્ય મૂલ્ય કરતાં વધુ હોય, તો ડાબા અડધા ભાગને શોધવા માટે જમણી સ્થિતિને મધ્યમ- 1 પર અપડેટ કરો.
  5. પુનરાવર્તન કરો: જ્યાં સુધી મૂલ્ય ન મળે અથવા તપાસવા માટે કોઈ વધુ ઘટકો ન હોય ત્યાં સુધી પગલાં 2 થી 4 નું પુનરાવર્તન કરો left > right.

ફાયદાઓ અને ગેરફાયદાઓ

ફાયદા:

  • કાર્યક્ષમ કામગીરી: અલ્ગોરિધમની સમય જટિલતા O(log n) છે, જે તેને મોટા ડેટાસેટ્સને હેન્ડલ કરવા માટે અત્યંત કાર્યક્ષમ બનાવે છે.
  • મોટા ડેટાસેટ્સ માટે અસરકારક: દ્વિસંગી શોધ મોટા ડેટાસેટ્સ માટે ઝડપથી તપાસ કરવા માટે ઘટકોની સંખ્યા ઘટાડવામાં અસરકારક છે.

ગેરફાયદા:

  • માત્ર સૉર્ટ કરેલા એરેને જ લાગુ પડે છે: અલ્ગોરિધમ માત્ર સૉર્ટ કરેલા એરે પર જ કામ કરે છે.
  • પગલાંઓની ચલ સંખ્યા: મૂલ્ય શોધવા માટે જરૂરી પગલાંઓની સંખ્યા એરેમાં તેની સ્થિતિ પર આધારિત છે, અને તે છેડાની નજીકના મૂલ્યો માટે ઘણા પગલાં લઈ શકે છે.

ઉદાહરણ: PHP માં સૉર્ટ કરેલ એરેમાં મૂલ્ય 12 શોધવા માટે બાઈનરી શોધ

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 લક્ષ્ય મૂલ્ય(12) સાથે સરખામણી કરીએ છીએ અને મેચ શોધીએ છીએ, તેથી અમે પોઝિશન 3 પરત કરીએ છીએ.
  4. અલ્ગોરિધમ સમાપ્ત થાય છે, અને અમે પરિણામ આઉટપુટ કરીએ છીએ "મૂલ્ય 12 સ્થિતિ 3 પર મળી."