<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های فرزاد</title><link>https://virgool.ir/feed/@f6rz9d</link><description>یه تازه‌کار تو برنامه نویسی که دوست داره یه روزی حرفه‌ای بشه و به خودش و هر کسی که نیاز داشت حتی یه ذره هم شده کمک کنه. تو مسیر یادگیری در مورد کنجکاوی‌هام مینویسم.</description><language>fa</language><pubDate>2026-11-12 15:29:22</pubDate><image><url>https://files.virgool.ir/upload/users/29382/avatar/i0vX1s.jpeg</url><title>فرزاد</title><link>https://virgool.ir/@f6rz9d</link></image><item><title>از grokking algorithms چی یادگرفتم بخش اول</title><link>https://virgool.ir/@f6rz9d/از-grokking-algorithms-چی-یادگرفتم-بخش-اول-fv4w9arjd7nl</link><description>اصلا الگوریتم چیه؟یه مجموعه دستور هست اش برای دستیابی به یه وظیفه ای که برنامه ریزی کردیم برای انجام اش.به عنوان مثال هر قسمت از کد میتونه یه الگوریتم باشهنکته ای که وجود داره، پیاده سازی الگوریتم ها به احتمال زیاد در هر زبانی که دوست دارید هست اش و میتونید باهاش کار کنید؛ اما پیاده سازی ها بدون استفاده خواهند بود اگر trade off ها رو نتونید درک کنید تو این کتاب در این مورد صحبت خواهد شدBinary Searchمثال: فکر کنید داخل یه دفترچه دنبال یه اسم هستیدکه با یه حرفی شروع میشه که مثلا بدونید اون حرف در وسط های الفبا هست اش. خب اگر بخواهید بگردیدمی رید از اول و شروع به گشتن میکنید؟یا ترجیح میدید که از وسط شروع به گشتن کنیدمثال دیگه: یه لغت در دیکشنری که مثلا با حرف O شروع میشهحالا فرض کنید میخواهید تو facebook وارد شوید و حرف اول شما برای username با کلمه ای در وسط الفبا شروع میشهfacebook میتونه از A شروع کنه یا منطقی تره از جایی در وسط دنبال اش بگردهاین یه مسئله سرچ هست اش و همه این موارد گفته شده الگوریتم های گفته شده از binary search برای حل مسئله استفاده میکنندBinary Searchیه الگوریتم که ورودی اش یه لیست مرتب شده است اگر المنت که دنبال اش هستید در لیست باشه باینری سرچ محل اون رو بهتون میگه در غیر این صورت null برمیگردونهساده ترین سرچ اینه که مثلا اگر قرار باشه یک شماره ای که مدنظر من هست اش رو در کمترین حالت ممکن حدس بزنید برای مثال اگر شماره مدنظر بین 1 تا 100 باشهدر هر بار حدس زدن میگم خیلی پایین یا خیلی بالاست یا درست هست اشفرض کنیم شما اینطوری حدس میزنید1و2و3و ...این شاید ساده ترین یا احمقانه ترین حالت باشهبا هر با حدس فقط محدوده یک شماره رو از بین می بریدروش بهتر شروع از 50 هست اش اگر آرایه مثلا 100 تایی هست همون اول نصف اش رو میگیم که مشخص بشه در چه بازه ای هست اشپس حدس بعدی میشه بازه مونده نصف اون یعنی 75 اگر فرضا گفته شده باشه خیلی پایین همین جوری تا انتهابعد اگر گفت 75 خیلی بالا بین 50 تا 75 نصف اش رو در نظر میگیرموسط بین 50 تا 75 میشه 25/2 = 12/5 همون 13 که وسط بین اون 2 عدد میشه جمع اش با 50 که میشه 63اگر بازم مثلا گفت 63 مثلا خیلی بالاست، دوباره وسط بین اون عدد یعنی اون 13 باقی مونده میشه 13/2 = 7بازه پایین رو چون گفته شده 63 خیلی بالاست با 7 جمع میکنیم که میشه 57 جواب درستاین کار binary search هست اشسئوال: فکر کنید دنبال یه لغت در دیکشنری هستید دیکشنری 240000 لغت دارد در بدترین حالت چند مرتبه سرچ خواهید داشت؟در سرچ ساده 240 هزار مرتبه اما در باینری سرچ 18 مرتبه240k -&gt; 120k -&gt; 60k -&gt; 30k -&gt; 15k -&gt; 7/5k -&gt; 3750 -&gt;1875 -&gt; 938 -&gt; 469 -&gt; 235-&gt; 118-&gt; 59 -&gt; 30 -&gt; 15 -&gt;8 -&gt; 4-&gt; 2 -&gt; 1این تعداد دفعاتی که نصف شده رو بشمری به جز شماره 1 انتهای میشه 18 مرتبهنکته: پس برای هر لیست ازn بیانری سرچ log n یا log در پایه 2 برای n هست زمان میبره برای بدترین حالت در صورتی که سرچ ساده n مرتبه زمان میبرهنکته ریاضی: log همون بر عکس توان هست اشمثلا چند مرتبه باید 10 رو در 10 ضرب کنیم تا 100 رو بدست بیاریمlog 100 در پایه 10 میشه 210 به توان 2 میشه 100نکته: سرچ باینری زمانی کار میکنه که لیست مرتب شده باشه</description><category>فرزاد</category><author>فرزاد</author><pubDate>Tue, 22 Jul 2025 21:38:44 +0330</pubDate></item></channel></rss>