در پست های قبل با روش جست و جوی خطی آشنا شدیم و دیدیم که در این شیوه از ابتدای لیست یا آرایه به دنبال عضو مورد نظر می گردیم و یکی یکی عناصر را بررسی کرده تا عنصر مورد نظر را بیابیم. پس می توان نتیجه گرفت که در این روش اگر لیست ما برای مثال 100 عضو داشته باشد برای پیدا کردن یک عضو دلخواه بایستی حد اکثر 100 جست و جو انجام دهیم. همان گونه که می بینید این روش زیاد سرعت مناسبی ندارد و در لیست های بزرگ ایجاد مشکل می کند. راه منطقی نیز این نیست که برای پیدا کردن یک کتاب در کتابخانه از ابتدا کل کتاب ها را بگردید چون در کتابخانه کتاب ها به صورت طبقه بندی شده قرار دارند و برای پیدا کتاب مورد نظر باید درست به قسمت مربوط به آن رجوع کنید. 
این الگوریتم جست و جو ، جست و جوی دودویی یا باینری نامیده می شود و به نسبت جست و جوی خطی سرعت بالا تری دارد. ولی پیشنیاز این روش این است که لیست مورد نظر ما مرتب باشد. یعنی عناصر به ترتیب از کوچک به بزرگ چیده شده باشند. اگر این پیشنیاز رعایت شده باشد این روش موثر است و جواب صحیح باز می گرداند و سرعت جست و جو را تا حد زیادی افزایش می دهد. در این روش در یک لیست n عنصری حداکثر به تعداد log2 (n+1) جست و جو نیاز داریم تا عنصر مورد نظر خود را بیابیم.
در این روش خانه ی وسط لیست را در نظر می گیریم ، اگر عنصر مورد نظر ما از خانه ی وسط لیست بیشتر بود پس باید در قسمت بالای لیست به دنبال آن بگردیم و اگر از خانه ی وسط لیست کوچک تر بود پس باید در قسمت پایین لیست جست و جو را ادامه دهیم . پس در اولین قدم نیمی از لیست ما حذف می شود و جست و جو در نیمه دیگر لیست ادامه می یابد. سپس دوباره خانه ی وسط از لیست باقی مانده را با عنصر مورد جست و جو مقایسه می کنیم. مثل قدم اول اگر آن از خانه وسط بیشتر بود به قسمت بالای لیست و اگر از خانه ی وسط کوچک تر بود به قسمت پایین لیست می رویم و جست و جو را در آن ادامه می دهیم. با این روش هر دفعه لیست مورد نظر کوچکتر می شود و در نهایت به عنصر مورد جست و جو می رسیم.

تکه برنامه بالا با زبان c++ موشته شده است و قسمت جست و جوی باینری را نشان می دهد. در این برنامه l [] لیست مرتب شده ، hi خانه ی آخر لیست و lo خانه ی پایین لیست ، mid خانه ی وسط لیست و a عنصر مورد جست و جو است.