الگوریتم جستجوی دودویی: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
Amirobot (بحث | مشارکت‌ها)
جز ربات: تصحیح جایگذاری کاما، شمارگان هزارگان
Amirobot (بحث | مشارکت‌ها)
جز ربات: تصحیح کاما، شمارگان هزارگان
خط ۱۶:
حتی اگر محدودهٔ اعداد مورد نظر نا محدود باشد(یعنی توسط N محدود نشده باشد) باز هم می‌توان با حداکثر <math>2\lceil \log_2 k \rceil </math> مرحله(که K عدد انتخاب شده‌است) عدد مورد نظر را یافت بدین ترتیب که با شروع از یک و دو برابر کردن آن در هر مرحله ابتدا مرز بالایی را پیدا نموده و سپس عدد خواسته شده را پیدا می‌کنیم. به عنوان مثال اگر عدد انتخاب شده ۱۱ باشد ما می‌توانیم ترتیب پرسش‌های زیر را برای پیدا کردن عدد دنبال کنیم: ۱ ← ۲ ← ۴ ← ۸ ← ۱۶ ← ۱۲ ← ۱۰ ← ۱۱.
 
هم چنین می‌توان این تکنیک را گسترش داد تا شامل اعداد منفی نیز بشود,بشود، به عنوان مثال حدس های زیر دنبال می‌شوند تا عدد ۱۳- پیدا شود: ۰ ← ۱- ← ۲- ← ۴- ← ۸- ← ۱۶- ← ۱۲- ← ۱۴- ← ۱۳-.
 
=== لیست های کلمات ===
خط ۲۳:
== تابع ==
[[پرونده:BinarySearchStats63.png|thumb|left|400px|تکرار برای ''N'' < 64]]
برای این که وارد جزئیات تابع شویم باید قراردادهای رسمی تری را تعریف می کنیم.ایده اولیه این است که داده ساختاری وجود دارد که به صورت آرایه A نمایش داده می‌شود,می‌شود، و المان های آن به صورت A(1), A(2),…,A توصیف می‌شوند و به هر ترتیبی قابل دستیابی اند.
 
داده ساختاری شامل دادهٔ دیگری به نام Key می‌شود,می‌شود، آرایه به گونه‌ای مرتب می‌شود که A(1).Key <= A(2).Key و ... .
 
هدف این است که مقدار x داده شده و اندیس p پیدا شود به طوری که A(p).Key = x.