بائنری سرچ الگورتھم ترتیب شدہ صف میں ایک مخصوص قدر تلاش کرنے کا ایک موثر طریقہ ہے۔ یہ نقطہ نظر صف کو چھوٹے حصوں میں تقسیم کرتا ہے اور تلاش کی حد کی درمیانی پوزیشن پر موجود قدر کا ہدف کی قدر کے ساتھ مسلسل موازنہ کرتا ہے۔ اگر اقدار مماثل ہیں، مطلوبہ قدر مل جاتی ہے۔ بصورت دیگر، الگورتھم تلاش کی حد کو کم کرتا رہتا ہے اور اس عمل کو اس وقت تک دہراتا ہے جب تک کہ قدر نہ مل جائے یا مزید عناصر کو جانچنے کے لیے باقی نہ رکھا جائے۔
مراحل:
- تلاش کی حد شروع کریں: صف کی پہلی پوزیشن سے
left
آخری پوزیشن تک تلاش کی حد کو منتخب کرکے شروع کریں۔right
- درمیانی نقطہ تلاش کریں: اوسط
left
اور صحیح پوزیشنوں کے ذریعے درمیانی نقطہ کا حساب لگائیں۔ یہ تلاش کی حد کا درمیانی نقطہ ہے۔ - قدروں کا موازنہ کریں: درمیانی نقطہ پر قیمت کا ہدف کی قدر سے موازنہ کریں۔
- موازنہ کا نتیجہ ہینڈل کریں: اگر درمیانی نقطہ پر موجود قدر ہدف کی قدر سے مماثل ہے، تو اس پوزیشن کو واپس کریں۔ اگر درمیانی نقطہ پر قیمت ہدف کی قدر سے کم ہے، تو دائیں نصف کو تلاش کرنے کے لیے بائیں پوزیشن کو درمیانی + 1 میں اپ ڈیٹ کریں۔ اگر درمیانی نقطہ پر قیمت ہدف کی قدر سے زیادہ ہے، تو بائیں نصف کو تلاش کرنے کے لیے دائیں پوزیشن کو درمیانی- 1 میں اپ ڈیٹ کریں۔
- دہرائیں: اقدامات 2 سے 4 تک دہرائیں جب تک کہ قدر نہ مل جائے یا چیک کرنے کے لیے مزید عناصر نہ ہوں
left > right
۔
فائدے اور نقصانات
فوائد:
- موثر کارکردگی: الگورتھم کی وقتی پیچیدگی O(log n) ہے، جو اسے بڑے ڈیٹاسیٹس کو سنبھالنے کے لیے انتہائی موثر بناتی ہے۔
- بڑے ڈیٹاسیٹس کے لیے موثر: بائنری سرچ بڑے ڈیٹاسیٹس کے لیے تیزی سے جانچنے کے لیے عناصر کی تعداد کو کم کرنے میں موثر ہے۔
نقصانات:
- صرف ترتیب شدہ صفوں پر لاگو ہوتا ہے: الگورتھم صرف ترتیب شدہ صفوں پر کام کرتا ہے۔
- مراحل کی متغیر تعداد: قدر کو تلاش کرنے کے لیے درکار مراحل کی تعداد کا انحصار صف میں اس کی پوزیشن پر ہے، اور یہ سرے کے قریب قدروں کے لیے بہت سے اقدامات کر سکتا ہے۔
مثال: پی ایچ پی میں ترتیب شدہ صف میں قدر 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 پر پائی گئی۔"