به گروهی از ریاضیدانها برخورد کردهاید که خواننده-ترانهسرا هم هستند. آنها برای هر یک از اعداد مورد علاقهشان یک ترانه نوشتهاند و همانطور که میتوانید تصور کنید، اعداد مورد علاقهی زیادی دارند (مثل ۰ یا ۷۳ یا ۶۱۷۴).
کنجکاو هستید ترانهی عدد مورد علاقهی خودتان را بشنوید، اما با این همه ترانه که باید یکییکی بررسی کنید، پیدا کردن ترانهی درست ممکن است مدتی طول بکشد. خوشبختانه، آنها ترانههایشان را در یک فهرست پخش مرتبشده بر اساس عنوان سازمان دادهاند؛ عنوان هم همان عددی است که ترانه دربارهی آن است.
متوجه میشوید که میتوانید از یک الگوریتم «جستوجوی دودویی» استفاده کنید تا با دانستن عنوان، ترانه را بهسرعت پیدا کنید.
وظیفهی شما پیادهسازی یک الگوریتم جستوجوی دودویی است.
الگوریتم جستوجوی دودویی با تقسیم مکرر یک فهرست به دو نیمه، عنصری را در آن پیدا میکند؛ به این ترتیب که فقط نیمهای را نگه میدارد که عنصر مورد جستوجو در آن قرار دارد. این کار به ما امکان میدهد جایگاههای ممکن عنصرمان را بهسرعت محدود کنیم، تا آن را پیدا کنیم یا تا همهی جایگاههای ممکن را از میان برداریم.
جستوجوی دودویی فقط زمانی کار میکند که فهرست مرتب شده باشد.
الگوریتم به این شکل است:
یک مثال:
فرض کنید در فهرست مرتب زیر به دنبال عدد ۲۳ هستیم: [4, 8, 12, 16, 23, 28, 32].
[23, 28, 32] برایمان میماند.[23].در Exercism ثبتنام کنید تا Delphi Pascal را همراه با 76 تمرین و مربیگری انسانی واقعی یاد بگیرید و در آن استاد شوید، همهی اینها رایگان.