દ્વિસંગી શોધ અલ્ગોરિધમ એ સૉર્ટ કરેલ એરેમાં ચોક્કસ મૂલ્ય શોધવા માટેની એક કાર્યક્ષમ પદ્ધતિ છે. આ અભિગમ એરેને નાના ભાગોમાં વિભાજિત કરે છે અને લક્ષ્ય મૂલ્ય સાથે શોધ શ્રેણીની મધ્ય સ્થાને મૂલ્યની સતત તુલના કરે છે. જો મૂલ્યો મેળ ખાય છે, તો ઇચ્છિત મૂલ્ય મળે છે; અન્યથા, અલ્ગોરિધમ શોધ શ્રેણીને સાંકડી કરવાનું ચાલુ રાખે છે અને જ્યાં સુધી મૂલ્ય ન મળે અથવા તપાસ કરવા માટે વધુ ઘટકો બાકી ન રહે ત્યાં સુધી પ્રક્રિયાને પુનરાવર્તિત કરે છે.
પગલાં:
- શોધ શ્રેણી શરૂ કરો: પ્રથમ સ્થાનથી એરેની
left
છેલ્લી સ્થિતિ સુધી શોધ શ્રેણી પસંદ કરીને પ્રારંભ કરો.right
- મધ્ય બિંદુ શોધો: સરેરાશ
left
અને જમણી સ્થિતિ દ્વારા મધ્યમ બિંદુની ગણતરી કરો; આ શોધ શ્રેણીનો મધ્ય બિંદુ છે. - મૂલ્યોની તુલના કરો: લક્ષ્ય મૂલ્ય સાથે મધ્યમ બિંદુ પરના મૂલ્યની તુલના કરો.
- હેન્ડલ સરખામણી પરિણામ: જો મધ્ય બિંદુ પરનું મૂલ્ય લક્ષ્ય મૂલ્ય સાથે મેળ ખાતું હોય, તો આ સ્થિતિ પરત કરો. જો મધ્ય બિંદુ પરનું મૂલ્ય લક્ષ્ય મૂલ્ય કરતાં ઓછું હોય, તો જમણા અડધાને શોધવા માટે ડાબી સ્થિતિને મધ્યમ + 1 પર અપડેટ કરો. જો મધ્ય બિંદુ પરનું મૂલ્ય લક્ષ્ય મૂલ્ય કરતાં વધુ હોય, તો ડાબા અડધા ભાગને શોધવા માટે જમણી સ્થિતિને મધ્યમ- 1 પર અપડેટ કરો.
- પુનરાવર્તન કરો: જ્યાં સુધી મૂલ્ય ન મળે અથવા તપાસવા માટે કોઈ વધુ ઘટકો ન હોય ત્યાં સુધી પગલાં 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.";
}
ઉદાહરણની સમજૂતી
- અમે પ્રથમ સ્થાનથી એરેની
left = 0
છેલ્લી સ્થિતિ સુધી પ્રારંભિક શોધ શ્રેણીથી પ્રારંભ કરીએ છીએright = 6
. - અમે ડાબી અને જમણી સ્થિતિની સરેરાશ દ્વારા મધ્યમ બિંદુ(મધ્ય) ની ગણતરી કરીએ છીએ;
mid = 3
. મધ્યમાં મૂલ્ય 12 છે. - અમે) પરના મૂલ્યની
mid(12
લક્ષ્ય મૂલ્ય(12) સાથે સરખામણી કરીએ છીએ અને મેચ શોધીએ છીએ, તેથી અમે પોઝિશન 3 પરત કરીએ છીએ. - અલ્ગોરિધમ સમાપ્ત થાય છે, અને અમે પરિણામ આઉટપુટ કરીએ છીએ "મૂલ્ય 12 સ્થિતિ 3 પર મળી."