<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های مهدی رزاقی</title>
        <link>https://virgool.io/feed/@mahdirazaqi</link>
        <description>برنامه نویس بک اند و علاقمند به دنیای اوپن سورس</description>
        <language>fa</language>
        <pubDate>2026-06-16 13:36:28</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/54380/avatar/xTZdbi.png?height=120&amp;width=120</url>
            <title>مهدی رزاقی</title>
            <link>https://virgool.io/@mahdirazaqi</link>
        </image>

                    <item>
                <title>قسمت ۸ دوره الگوریتم و ساختمان داده: الگوریتم دایجسترا (Dijkstra’s Algorithm)</title>
                <link>https://virgool.io/@mahdirazaqi/algorithms-and-data-structures-dijkstras-pr9mtczbls78</link>
                <description>در دنیای الگوریتم‌ها و ساختمان داده‌ها، یافتن کوتاه‌ترین مسیر یکی از موضوعات کلیدی است. در این میان، الگوریتم Dijkstra به عنوان یکی از مهم‌ترین و پرکاربردترین روش‌ها برای حل مسائل کوتاه‌ترین مسیر شناخته می‌شود. در این مقاله، با این الگوریتم، نحوه عملکرد آن، کاربردهای آن و پیاده‌سازی ساده‌ای از آن آشنا خواهیم شد.الگوریتم Dijkstra چیست؟الگوریتم Dijkstra یک روش برای یافتن کوتاه‌ترین مسیر از یک گره مبدأ به سایر گره‌های یک گراف وزن‌دار است. این الگوریتم توسط ادسخر دایکسترا در سال ۱۹۵۶ معرفی شد و امروزه به طور گسترده در مسائل مختلفی مانند شبکه‌ها، سیستم‌های حمل‌ونقل و مسیر‌یابی GPS استفاده می‌شود.ویژگی‌های الگوریتم Dijkstraمناسب برای گراف‌های وزن‌دار غیرمنفی.برای یافتن مسیر از گره مبدأ به سایر گره‌ها به کار می‌رود.از یک اولویت‌بندی (Priority Queue) برای انتخاب گره‌ها استفاده می‌کند.نحوه عملکرد الگوریتم Dijkstraمقدار اولیه: همه گره‌ها با مقدار بی‌نهایت مقداردهی می‌شوند، به جز گره مبدأ که مقدار آن صفر است.انتخاب گره: گره‌ای که کمترین مقدار فعلی را دارد، انتخاب و بررسی می‌شود.به‌روزرسانی مسیرها: مقدار گره‌های همسایه بر اساس وزن یال‌ها و فاصله از گره مبدأ به‌روزرسانی می‌شود.تکرار: این روند ادامه می‌یابد تا تمامی گره‌ها بررسی شوند.کاربردهای الگوریتم Dijkstraسیستم‌های مسیریابی: مانند Google Maps و GPS.شبکه‌های کامپیوتری: برای پیدا کردن مسیرهای بهینه در شبکه.مدیریت منابع: در سیستم‌هایی که نیاز به بهینه‌سازی مصرف منابع دارند.بازی‌های ویدیویی: برای پیدا کردن مسیرهای هوشمندانه توسط شخصیت‌های بازی.محدودیت‌های الگوریتم Dijkstraنمی‌تواند با یال‌های وزن منفی کار کند.در گراف‌های بسیار بزرگ، به دلیل پیچیدگی زمانی، ممکن است ناکارآمد باشد.جمع‌بندیالگوریتم Dijkstra یکی از ابزارهای کلیدی برای یافتن کوتاه‌ترین مسیر در گراف‌ها است و در بسیاری از سیستم‌های دنیای واقعی کاربرد دارد. با پیاده‌سازی این الگوریتم، شما می‌توانید مسائل مختلفی را که به بهینه‌سازی مسیر نیاز دارند، به شکلی کارآمد حل کنید.📌 برای مشاهده فیلم آموزشی این قسمت و دسترسی کامل به دوره، به لینک زیر مراجعه کنید:لینک ویدئو در یوتیوب✨ اگر این مقاله برای شما مفید بود، آن را با دوستان برنامه‌نویس خود به اشتراک بگذارید. منتظر نظرات و سوالات شما هستم! 🌟</description>
                <category>مهدی رزاقی</category>
                <author>مهدی رزاقی</author>
                <pubDate>Sun, 23 Mar 2025 18:31:17 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت ۷ دوره الگوریتم و ساختمان داده: جستجوی سطح اول (Breadth-First Search)</title>
                <link>https://virgool.io/@mahdirazaqi/algorithms-and-data-structures-bfs-eedfbdvsg44l</link>
                <description>الگوریتم‌ها در دنیای برنامه‌نویسی یکی از مهم‌ترین ابزارهایی هستند که به ما امکان می‌دهند تا مسائل پیچیده را به شکلی ساختارمند و کارآمد حل کنیم. یکی از این الگوریتم‌های کلیدی که در مباحث گراف و درخت‌ها کاربرد گسترده‌ای دارد، Breadth-First Search یا به اختصار BFS است. در این مقاله به بررسی این الگوریتم، کاربردهای آن و نحوه پیاده‌سازی آن می‌پردازیم.الگوریتم BFS چیست؟الگوریتم BFS یک روش جستجو در ساختارهای داده گراف یا درخت است که گره‌ها را به صورت لایه‌به‌لایه پیمایش می‌کند. این روش از یک صف (Queue) برای مدیریت ترتیب گره‌هایی که باید بررسی شوند استفاده می‌کند.ویژگی‌های اصلی BFS:گره‌های نزدیک‌تر به نقطه شروع ابتدا بررسی می‌شوند.برای پیدا کردن کوتاه‌ترین مسیر در گراف‌های بدون وزن بسیار مناسب است.تضمین می‌کند که تمامی گره‌ها (در صورت وجود) کشف خواهند شد.نحوه عملکرد BFSابتدا الگوریتم از یک گره آغاز می‌شود و آن را به صف اضافه می‌کند.در هر مرحله، گره موجود در ابتدای صف پردازش می‌شود و تمامی گره‌های همسایه (که هنوز بازدید نشده‌اند) به صف اضافه می‌شوند.این روند تا زمانی که صف خالی شود ادامه می‌یابد.کاربردهای BFSالگوریتم BFS در حوزه‌های مختلف کاربرد دارد، از جمله:پیدا کردن کوتاه‌ترین مسیر در گراف‌های بدون وزن.حل مسئله Maze یا پازل‌هایی که نیاز به جستجوی مسیر دارند.کشف تمام گره‌های یک شبکه.طراحی بازی‌های گرافیکی که نیاز به جستجو در محیط دارند.نقاط قوت و ضعف BFSنقاط قوت:سادگی پیاده‌سازی.مناسب برای گراف‌های کوچک.یافتن کوتاه‌ترین مسیر در گراف‌های بدون وزن.نقاط ضعف:مصرف حافظه بالا به دلیل ذخیره گره‌ها در صف.عملکرد ضعیف در گراف‌های بزرگ و پیچیده.جمع‌بندیالگوریتم BFS یکی از ابزارهای کلیدی در برنامه‌نویسی و طراحی الگوریتم‌هاست که به شما امکان می‌دهد مسائل مختلف در گراف‌ها و درخت‌ها را به راحتی حل کنید. با یادگیری این الگوریتم، پایه‌ای قوی برای درک سایر الگوریتم‌های پیشرفته‌تر ایجاد می‌کنید.📌 برای مشاهده فیلم آموزشی این قسمت و دسترسی کامل به دوره، به لینک زیر مراجعه کنید:لینک ویدئو در یوتیوب✨ اگر این مقاله برای شما مفید بود، آن را با دوستان برنامه‌نویس خود به اشتراک بگذارید. منتظر نظرات و سوالات شما هستم! 🌟</description>
                <category>مهدی رزاقی</category>
                <author>مهدی رزاقی</author>
                <pubDate>Sun, 12 Jan 2025 15:10:14 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت ۶ دوره الگوریتم و ساختمان داده: جداول هش (Hash Tables)</title>
                <link>https://virgool.io/@mahdirazaqi/algorithms-and-data-structures-hash-tables-ae7q46vhn8nw</link>
                <description>در دنیای برنامه‌نویسی و طراحی نرم‌افزار، انتخاب ساختار داده‌ی مناسب می‌تواند تأثیر قابل‌توجهی بر عملکرد سیستم داشته باشد. یکی از ساختارهای داده‌ی بسیار کاربردی و قدرتمند، Hash Table است. در این مقاله به بررسی مفهوم، عملکرد و کاربردهای Hash Tables می‌پردازیم.جدول هش چیست؟جدول هش یا Hash Table، یک ساختار داده است که داده‌ها را به صورت کلید-مقدار (key-value) ذخیره می‌کند. این ساختار امکان ذخیره‌سازی و دسترسی سریع به داده‌ها را فراهم می‌کند، به طوری که جستجو، اضافه کردن یا حذف داده‌ها در زمان تقریبی O(1) انجام می‌شود.عملکرد Hash Tableجدول هش از یک تابع هش (Hash Function) برای نگاشت کلیدها به شاخص‌های آرایه استفاده می‌کند.تابع هش: یک الگوریتم ریاضی که یک کلید را به یک مقدار هش یکتا (Index) تبدیل می‌کند.آرایه‌ی اصلی: داده‌ها در آرایه‌ای ذخیره می‌شوند که شاخص‌های آن توسط تابع هش مشخص می‌شود.با این حال، گاهی اوقات ممکن است دو کلید مختلف به یک شاخص هش شوند. این وضعیت که برخورد (Collision) نامیده می‌شود، با استفاده از روش‌هایی مانند زنجیره‌سازی (Chaining) یا جایگزینی باز (Open Addressing) مدیریت می‌شود.کاربردهای Hash Tablesساخت دیکشنری یا مپ‌هادر زبان‌هایی مانند Python (ساختار dict) و Java (ساختار HashMap)، Hash Tables به عنوان ابزاری برای ذخیره‌سازی داده‌های کلید-مقدار استفاده می‌شود.پایگاه‌های داده و سیستم‌های کشسیستم‌های مدیریت پایگاه داده از Hash Tables برای سرعت بخشیدن به عملیات جستجو استفاده می‌کنند.برنامه‌های شبکهدر پروتکل‌های مسیریابی و نگهداری جدول آدرس‌های IP.تشخیص تکرار داده‌هابرای شناسایی داده‌های تکراری در پردازش داده‌ها.مزایای Hash Tablesسرعت بالا در عملیات جستجو و ذخیره‌سازی.پیاده‌سازی ساده برای بسیاری از کاربردها.انعطاف‌پذیری بالا در مدیریت داده‌های پویا.معایب Hash Tablesبرخوردها (Collisions): در صورت وجود تعداد زیادی برخورد، کارایی کاهش می‌یابد.مصرف حافظه زیاد: برای جلوگیری از برخوردها، آرایه‌ها معمولاً باید بزرگ‌تر از مقدار مورد نیاز باشند.نتیجه‌گیریجداول هش یکی از ساختارهای داده کلیدی است که هر برنامه‌نویس باید با آن آشنا باشد. این ساختار داده قدرتمند امکان مدیریت سریع داده‌ها را فراهم می‌کند و در بسیاری از پروژه‌های نرم‌افزاری نقش اساسی ایفا می‌کند.اگر می‌خواهید درباره Hash Tables بیشتر بدانید و کاربردهای آن را در عمل ببینید، پیشنهاد می‌کنیم ویدیوی آموزشی ما را در این زمینه مشاهده کنید:📌 برای مشاهده فیلم آموزشی این قسمت و دسترسی کامل به دوره، به لینک زیر مراجعه کنید: لینک ویدئو در یوتیوببرای تماشا قسمت ششم این مقاله، اینجا را کلیک کنید✨ اگر این مقاله برای شما مفید بود، آن را با دوستان برنامه‌نویس خود به اشتراک بگذارید. منتظر نظرات و سوالات شما هستم! 🌟</description>
                <category>مهدی رزاقی</category>
                <author>مهدی رزاقی</author>
                <pubDate>Mon, 23 Dec 2024 11:02:08 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت ۵ دوره الگوریتم و ساختمان داده: مرتب‌سازی سریع (Quick Sort)</title>
                <link>https://virgool.io/@mahdirazaqi/algorithms-and-data-structures-quick-sort-engzefaqczbi</link>
                <description>مرتب‌سازی داده‌ها یکی از مهم‌ترین عملیات در دنیای برنامه‌نویسی و علوم کامپیوتر است. یکی از سریع‌ترین و بهینه‌ترین روش‌های مرتب‌سازی، الگوریتم Quick Sort است که از روش تقسیم و حل (Divide and Conquer) بهره می‌برد. در این مقاله با مفهوم، نحوه عملکرد و کاربرد این الگوریتم آشنا خواهیم شد.الگوریتم Quick Sort چیست؟مرتب‌سازی سریع یکی از الگوریتم‌هایی است که با استفاده از تقسیم‌بندی (Partitioning)، داده‌ها را مرتب می‌کند. ایده اصلی این الگوریتم این است که یک عنصر به نام Pivot انتخاب می‌شود و داده‌ها به دو بخش تقسیم می‌شوند:عناصر کوچک‌تر از Pivotعناصر بزرگ‌تر از Pivotسپس این فرآیند برای هر بخش به صورت بازگشتی (Recursive) تکرار می‌شود تا تمام داده‌ها مرتب شوند.چرا Quick Sort سریع است؟کارایی بالا: این الگوریتم در حالت میانگین زمانی برابر با O(n log n) دارد.بهینه برای داده‌های بزرگ: به دلیل تقسیم‌بندی داده‌ها، Quick Sort برای مرتب‌سازی داده‌های بزرگ بسیار مناسب است.انعطاف‌پذیری: می‌تواند برای انواع مختلف داده‌ها به کار رود.مراحل اجرای Quick Sortانتخاب Pivotیک عنصر از آرایه به عنوان Pivot انتخاب می‌شود.تقسیم‌بندی داده‌هاعناصر کوچک‌تر از Pivot به سمت چپ و عناصر بزرگ‌تر به سمت راست منتقل می‌شوند.بازگشت (Recursion)الگوریتم به صورت بازگشتی برای بخش‌های چپ و راست تکرار می‌شود.ادغام نهاییزمانی که تمام بخش‌ها مرتب شدند، آرایه نهایی به دست می‌آید.کاربردهای Quick Sortمرتب‌سازی داده‌های بزرگبهینه‌سازی سیستم‌های پایگاه دادهمرتب‌سازی آرایه‌های چند بعدیجمع‌بندیالگوریتم Quick Sort یکی از موثرترین روش‌ها برای مرتب‌سازی داده‌هاست. با یادگیری این الگوریتم، می‌توانید بهینه‌سازی قابل توجهی در عملکرد برنامه‌های خود ایجاد کنید.📌 برای مشاهده فیلم آموزشی این قسمت و دسترسی کامل به دوره، به لینک زیر مراجعه کنید: لینک ویدئو در یوتیوببرای تماشا قسمت ششم این مقاله، اینجا را کلیک کنید✨ اگر این مقاله برای شما مفید بود، آن را با دوستان برنامه‌نویس خود به اشتراک بگذارید. منتظر نظرات و سوالات شما هستم! 🌟</description>
                <category>مهدی رزاقی</category>
                <author>مهدی رزاقی</author>
                <pubDate>Fri, 13 Dec 2024 20:08:45 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت ۴ دوره الگوریتم و ساختمان داده: بازگشت (Recursion)</title>
                <link>https://virgool.io/@mahdirazaqi/algorithms-and-data-structures-recursion-bxh7wliur2zq</link>
                <description>بازگشت (Recursion) یکی از مفاهیم مهم و کاربردی در برنامه‌نویسی و طراحی الگوریتم‌ها است. با استفاده از بازگشت می‌توان مسائل پیچیده را به شکل ساده‌تر و قابل مدیریت تبدیل کرد. این مقاله به شما کمک می‌کند تا مفهوم بازگشت را درک کنید، کاربردهای آن را بشناسید و با مثال‌هایی عملی، مهارت خود را در این زمینه تقویت کنید.بازگشت (Recursion) چیست؟بازگشت (Recursion) فرایندی است که در آن یک تابع خودش را صدا می‌زند. این فرآیند معمولاً برای حل مسائلی به کار می‌رود که قابل تقسیم به زیرمسائل مشابه هستند.برای اینکه بازگشت به درستی عمل کند، دو مفهوم کلیدی وجود دارد:حالت پایه (Base Case): وضعیتی که در آن تابع دیگر خودش را صدا نمی‌زند و محاسبه پایان می‌یابد.حالت بازگشتی (Recursive Case): وضعیتی که در آن تابع خودش را با ورودی‌های ساده‌تر صدا می‌زند.چرا Recursion مفید است؟سادگی کد: بسیاری از مسائل با استفاده از بازگشت به طور طبیعی و ساده‌تر قابل بیان هستند.تقسیم و حل: مسائل پیچیده را می‌توان با تقسیم به زیرمسائل کوچک‌تر حل کرد.کاربرد گسترده: بازگشت در الگوریتم‌های متنوعی مانند پیمایش درخت‌ها، مرتب‌سازی و مسائل ترکیبیاتی استفاده می‌شود.مثال ساده: محاسبه فاکتوریلفاکتوریل عدد n به شکل زیر تعریف می‌شود:n! = n × (n−1) × (n−2) × … × 1این تعریف را می‌توان به صورت بازگشتی بیان کرد:1! = 1 (Base Case)
n! = n × (n − 1)! (Recursive Case)کد بازگشتی برای محاسبه فاکتوریل در زبان جاوا اسکریپت:function factorial(n) {
    if (n === 1) {
        return 1; // Base Case
    }
    return n * factorial(n - 1); // Recursive Case
}
console.log(factorial(5));کاربردهای Recursionپیمایش درخت‌ها: برای پیمایش درخت‌ها و گراف‌ها، الگوریتم‌های DFS (جستجوی عمق اول) به طور گسترده از بازگشت استفاده می‌کنند.مرتب‌سازی: الگوریتم‌هایی مانند Quick Sort و Merge Sort به صورت بازگشتی عمل می‌کنند.حل مسائل ترکیبیاتی: مسائلی مانند تولید زیرمجموعه‌ها یا ترکیب‌ها.محاسبات ریاضی: مانند فاکتوریل، سری فیبوناچی و غیره.مزایا و معایب Recursionمزایا:کد کوتاه‌تر و خواناتر.مناسب برای مسائل قابل تقسیم.معایب:مصرف بیشتر حافظه به دلیل استفاده از پشته.ممکن است منجر به خطای Stack Overflow شود، اگر حالت پایه به درستی تعریف نشده باشد یا ورودی بسیار بزرگ باشد.نکات کلیدی در استفاده از Recursionهمیشه یک حالت پایه مشخص کنید.مطمئن شوید که هر فراخوانی به حالت پایه نزدیک‌تر می‌شود.بازدهی الگوریتم را بررسی کنید؛ بازگشت در برخی موارد ممکن است زمان اجرای بالایی داشته باشد.نتیجه‌گیریبازگشت (Recursion) ابزاری قدرتمند و ضروری در طراحی الگوریتم‌ها است که به شما کمک می‌کند مسائل پیچیده را به شکلی ساده‌تر حل کنید. اگرچه نیازمند دقت در طراحی است، اما با یادگیری و تمرین، می‌توانید از آن برای حل مسائل متنوعی بهره ببرید.📌 برای مشاهده فیلم آموزشی این قسمت و دسترسی کامل به دوره، به لینک زیر مراجعه کنید:لینک ویدئو در یوتیوببرای تماشا قسمت پنجم این مقاله، اینجا را کلیک کنید✨ اگر این مقاله برای شما مفید بود، آن را با دوستان برنامه‌نویس خود به اشتراک بگذارید. منتظر نظرات و سوالات شما هستم! 🌟</description>
                <category>مهدی رزاقی</category>
                <author>مهدی رزاقی</author>
                <pubDate>Thu, 05 Dec 2024 19:23:02 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت ۳ دوره الگوریتم و ساختمان داده: مرتب سازی انتخابی (Selection Sort)</title>
                <link>https://virgool.io/@mahdirazaqi/algorithms-and-data-structures-selection-sort-hftyxzzfgvla</link>
                <description>الگوریتم Selection Sort یکی از ساده‌ترین و ابتدایی‌ترین الگوریتم‌های مرتب‌سازی است که برای مرتب کردن لیست‌ها یا آرایه‌ها مورد استفاده قرار می‌گیرد. این الگوریتم با وجود سادگی، پایه‌ای قوی برای درک مفاهیم اساسی مرتب‌سازی فراهم می‌کند. در این مقاله با نحوه عملکرد این الگوریتم و کاربردهای آن آشنا می‌شویم.مرتب سازی انتخابی (Selection Sort) چیست؟مرتب‌سازی انتخابی یک الگوریتم مرتب‌سازی است که به صورت مکرر کوچک‌ترین (یا بزرگ‌ترین) عنصر موجود در لیست را پیدا کرده و آن را در موقعیت مناسب قرار می‌دهد. این فرایند برای هر عنصر از لیست تکرار می‌شود تا تمام عناصر مرتب شوند.نحوه عملکرد Selection Sortلیست داده‌ها را در نظر بگیرید.کوچک‌ترین (یا بزرگ‌ترین) مقدار را پیدا کنید.مقدار پیدا شده را با اولین عنصر لیست جابه‌جا کنید.این روند را برای لیست باقی‌مانده (بدون عنصر اول) تکرار کنید.این فرآیند تا زمانی ادامه می‌یابد که تمام عناصر مرتب شوند.مثال ساده: مرتب‌سازی یک آرایهفرض کنید می‌خواهیم آرایه زیر را مرتب کنیم:[29, 10, 14, 37, 13]در گام اول، کوچک‌ترین عدد پیدا شده (10) با اولین عدد (29) جابه‌جا می‌شود:[10, 29, 14, 37, 13]در گام دوم، کوچک‌ترین عدد باقی‌مانده (13) با دومین عدد (29) جابه‌جا می‌شود:[10, 13, 14, 37, 29]این روند ادامه می‌یابد تا لیست به شکل نهایی خود مرتب شود:[10, 13, 14, 29, 37]مزایا و معایب Selection Sortمزایا:ساده و قابل فهم.مناسب برای آرایه‌های کوچک.معایب:کارایی پایین در آرایه‌های بزرگ به دلیل پیچیدگی زمانی O(n^2).تعداد مقایسه‌ها زیاد است و برای داده‌های بزرگ ناکارآمد می‌شود.کاربردهای Selection Sortآموزش مفاهیم مرتب‌سازی: این الگوریتم به دلیل سادگی، ابزار مناسبی برای یادگیری الگوریتم‌های مرتب‌سازی است.مرتب‌سازی لیست‌های کوچک: اگر تعداد عناصر لیست کم باشد، Selection Sort گزینه مناسبی است.پیچیدگی زمانی و مکانیپیچیدگی زمانی: بهترین حالت: O(n^2) - بدترین حالت: O(n^2)پیچیدگی مکانی:O(1) (این الگوریتم نیاز به فضای اضافی ندارد.)نتیجه‌گیریالگوریتم Selection Sort یک روش ساده و قابل فهم برای مرتب‌سازی داده‌ها است. اگرچه برای مجموعه‌های بزرگ کارایی لازم را ندارد، اما به عنوان یک الگوریتم پایه برای درک بهتر الگوریتم‌های پیشرفته‌تر بسیار مفید است.📌 برای مشاهده فیلم آموزشی این قسمت و دسترسی کامل به دوره، به لینک زیر مراجعه کنید:لینک ویدئو در یوتیوببرای تماشا قسمت چهارم این مقاله، اینجا را کلیک کنید✨ اگر این مقاله برای شما مفید بود، آن را با دوستان برنامه‌نویس خود به اشتراک بگذارید. منتظر نظرات و سوالات شما هستم! 🌟</description>
                <category>مهدی رزاقی</category>
                <author>مهدی رزاقی</author>
                <pubDate>Mon, 02 Dec 2024 21:34:08 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت ۲ دوره الگوریتم و ساختمان داده: جستجوی دودویی (Binary Search)</title>
                <link>https://virgool.io/@mahdirazaqi/algorithms-and-data-structures-binary-search-jhoxazwah9xd</link>
                <description>اگر شما هم به دنیای برنامه‌نویسی علاقه‌مند هستید و می‌خواهید مهارت‌های خود را در زمینه الگوریتم‌ها و ساختمان داده‌ها ارتقا دهید، یادگیری باینری سرچ (Binary Search) یکی از مهم‌ترین قدم‌هایی است که باید بردارید.باینری سرچ، یکی از الگوریتم‌های قدرتمند برای جستجو در داده‌های مرتب است. این روش نه تنها سرعت بالایی دارد، بلکه با ساده‌سازی فرآیند جستجو، می‌تواند به شما کمک کند تا کارایی کدهای خود را به شکل چشم‌گیری افزایش دهید.باینری سرچ چیست؟باینری سرچ یک روش جستجوست که با نصف کردن دامنه جستجو، آیتم موردنظر را پیدا می‌کند. این الگوریتم تنها در صورتی قابل استفاده است که داده‌ها به صورت مرتب باشند. به عبارت دیگر، شما می‌توانید یک لیست از اعداد، اسامی یا هر داده مرتب دیگری را با استفاده از این الگوریتم سریع‌تر از روش‌های سنتی جستجو کنید.چرا باینری سرچ مهم است؟سرعت بالا:باینری سرچ در زمان اجرا از پیچیدگی زمانی O(log n) برخوردار است، به این معنا که حتی برای لیست‌های بسیار طولانی نیز در زمان کمی به جواب می‌رسید.کاربرد گسترده:این الگوریتم در بسیاری از مسائل واقعی مانند جستجوی کتاب در کتابخانه دیجیتال، پیدا کردن رکوردها در پایگاه داده‌ها، و حتی حل مسائل پیچیده‌تر به کار می‌رود.مهارت مصاحبه‌های شغلی:بسیاری از مصاحبه‌های شغلی در حوزه برنامه‌نویسی، شامل سوالاتی درباره باینری سرچ هستند. تسلط بر این الگوریتم می‌تواند شما را یک قدم به موفقیت نزدیک‌تر کند.باینری سرچ چگونه کار می‌کند؟مراحل اجرای باینری سرچ به شرح زیر است:لیست مرتب داده‌ها را در نظر بگیرید.مقدار میانی (middle) لیست را پیدا کنید.مقدار میانی را با مقدار هدف (target) مقایسه کنید: اگر مقدار میانی برابر با هدف باشد، نتیجه پیدا شده است.اگر مقدار میانی بزرگ‌تر از هدف باشد، جستجو در نیمه چپ ادامه می‌یابد.اگر مقدار میانی کوچک‌تر از هدف باشد، جستجو در نیمه راست ادامه می‌یابد.این فرآیند تا زمانی ادامه پیدا می‌کند که مقدار هدف پیدا شود یا لیست خالی شود.چطور باینری سرچ را یاد بگیریم؟یادگیری این الگوریتم به تمرین و درک اصول اولیه نیاز دارد. در دومین قسمت از دوره آموزشی &quot;الگوریتم و ساختمان داده&quot;، به صورت کامل و با مثال‌های عملی، باینری سرچ را آموزش داده‌ایم. این دوره برای کسانی طراحی شده که می‌خواهند از پایه، مفاهیم الگوریتم را یاد بگیرند و به زبان ساده آن را درک کنند.📌 برای مشاهده فیلم آموزشی این قسمت و دسترسی کامل به دوره، به لینک زیر مراجعه کنید:لینک ویدئو در یوتیوببرای تماشا قسمت سوم این مقاله، اینجا را کلیک کنید✨ اگر این مقاله برای شما مفید بود، آن را با دوستان برنامه‌نویس خود به اشتراک بگذارید. منتظر نظرات و سوالات شما هستم! 🌟</description>
                <category>مهدی رزاقی</category>
                <author>مهدی رزاقی</author>
                <pubDate>Sun, 24 Nov 2024 11:45:48 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت ۱ دوره الگوریتم و ساختمان داده: مقدمه و معرفی</title>
                <link>https://virgool.io/@mahdirazaqi/algorithms-and-data-structures-qonxbcadxf1t</link>
                <description>مقدمه‌ای بر الگوریتم و ساختمان داده: قدم اول در مسیر برنامه‌نویسی حرفه‌ایالگوریتم‌ها و ساختمان داده‌ها یکی از بنیادی‌ترین مفاهیمی هستند که هر برنامه‌نویس باید با آن‌ها آشنا باشد. اگر به دنبال این هستید که کدهای بهینه‌تر بنویسید، عملکرد پروژه‌های خود را بهبود ببخشید، و مشکلات پیچیده را با راه‌حل‌های خلاقانه حل کنید، یادگیری الگوریتم‌ها یک ضرورت است.در این مقاله به صورت مختصر و ساده به اهمیت الگوریتم‌ها و ساختمان داده می‌پردازیم و شما را با مفاهیم اولیه‌ای که در اولین قسمت دوره آموزشی ما پوشش داده شده، آشنا می‌کنیم.چرا باید الگوریتم‌ها و ساختمان داده‌ها را یاد بگیریم؟الگوریتم‌ها به ما می‌گویند چگونه یک مسئله را مرحله‌به‌مرحله حل کنیم. ساختمان داده‌ها نیز به ما کمک می‌کنند اطلاعات را به شیوه‌ای سازماندهی کنیم که کارایی بیشتری داشته باشیم.برای مثال، تصور کنید در یک لیست طولانی از اسامی باید اسم یک فرد را پیدا کنید. اگر بخواهید همه اسامی را یکی‌یکی چک کنید، این روش زمان زیادی می‌برد. اما اگر لیست مرتب باشد و از یک الگوریتم سریع مثل باینری سرچ استفاده کنید، می‌توانید در چند ثانیه پاسخ را پیدا کنید.دوره &quot;Grokking Algorithms&quot;: یک مسیر ساده برای یادگیریدر این دوره، با الهام از کتاب معروف &quot;Grokking Algorithms&quot;، تلاش کرده‌ایم تا مفاهیم را به زبانی ساده و با مثال‌های عملی توضیح دهیم.قسمت اول دوره، مقدمه‌ای است برای:تعریف الگوریتم و ساختمان دادهنقش آن‌ها در بهبود عملکرد کدهاچرا یادگیری این مفاهیم حتی برای مبتدی‌ها ضروری استچه چیزی از این دوره یاد می‌گیرید؟در این دوره شما:با الگوریتم‌ها آشنا می‌شوید و یاد می‌گیرید چطور به صورت بهینه مسائل را حل کنید.ساختمان داده‌های پرکاربرد مثل آرایه‌ها، لیست‌های پیوندی و درخت‌ها را خواهید شناخت.مهارت‌هایی به دست می‌آورید که برای موفقیت در مصاحبه‌های شغلی و پروژه‌های واقعی ضروری است.شروع یادگیری آسان‌تر از همیشهاگر علاقه‌مند هستید که از همین حالا یادگیری الگوریتم و ساختمان داده را شروع کنید، پیشنهاد می‌کنم اولین قسمت این دوره آموزشی را ببینید. در این ویدیو با مفاهیم پایه آشنا می‌شوید و قدم اول خود را در مسیر یادگیری برمی‌دارید.📌 برای مشاهده فیلم آموزشی این قسمت و دسترسی کامل به دوره، به لینک زیر مراجعه کنید:لینک ویدئو در یوتیوببرای تماشا قسمت دوم این مقاله، اینجا را کلیک کنید✨ اگر این مقاله برای شما مفید بود، آن را با دوستان برنامه‌نویس خود به اشتراک بگذارید. منتظر نظرات و سوالات شما هستم! 🌟</description>
                <category>مهدی رزاقی</category>
                <author>مهدی رزاقی</author>
                <pubDate>Sat, 16 Nov 2024 23:20:41 +0330</pubDate>
            </item>
                    <item>
                <title>کار با فایل ها در پایتون</title>
                <link>https://virgool.io/@mahdirazaqi/%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-lm99dltezifu</link>
                <description>کار با فایل در پایتونسلام رفقای عزیز! تو این مقاله قصد آموزش کار با فایل ها رو در زبان برنامه نویسی پایتون داریم.همه میدونیم که کار کردن با فایل در هر زبان برنامه نویسی، خیلی با اهمیت هستش. و ممکنه در هر جایی از برنامه، از این امکان بسیار جذاب استفاده کنیم.  به همین دلیل، خود زبان پایتون بصورت پیش فرض، یکسری توابع برای مدیریت فایل ها داره، که باهاشون میتونیم فایل ها رو ایجاد  کنیم، بخونیم، بروزرسانی و حتی حذف کنیم.نکته بسیار مهم: برای کار با فایل در  پایتون، احتیاج به استفاده و import هیچ کتابخانه ای نداریم، و خود پایتون بصورت پیش فرض از این قابلیت پشتیبانی میکند.برای دیدن کامل این آموزش، لطفا به روی این لینک کلیک کنید و ادامه مطلب رو در سایت کدیار ببینید.ممنونم بابت وقتی که گذاشتید و تا اینجا مقاله رو خوندید.</description>
                <category>مهدی رزاقی</category>
                <author>مهدی رزاقی</author>
                <pubDate>Tue, 29 Jun 2021 16:03:59 +0430</pubDate>
            </item>
                    <item>
                <title>[0] مقدمات برای برنامه نویسی پروژه بلاگ (مثل ویرگول) با زبان Go</title>
                <link>https://virgool.io/@mahdirazaqi/nevees-project-with-go-0-fanbuop55dbc</link>
                <description>این به عنوان اولین پست من در سرویس ویرگول هستش و تجربه ای در نوشتن ندارم و بلد نیستم خیلی رسمی و مقاله طور پست بزارم و اینجا هم هر چی به دلم بشینه براتون میگم.پس سلام به همه کسایی که دارن اولین پست من رو میخونند، بزارید از اینجا شروع کنم که من یک برنامه نویس بک اند (سمت سرور) هستم و برای آموزش یادگیری مهارت های برنامه نویسی، از سایت هایی مثل مدیوم استفاده میکنم و واقعا میشه گفت که بهترینه، برای همین مجذوب همچین سرویس هایی هستم. و دنبال این بودم ببینم سرویس مشابهه مدیوم، چه فارسی چه انگلیسی داریم یا نه؟ که چشمم به سرویس خیلی خوبه ویرگول خورد، و از اون روز مقالات ویرگول رو دنبال میکنم.حالا مقدمات رو بزارم کنار و برم سر اصل مطلب، من چند وقتی هست که به واسطه شرکتمون مجبور شدم که زبان برنامه نویسی Go رو یاد بگیرم و برنامه نویسی سمت سرور انجام بدم. اونایی که با زبان Go کار کرده باشند میدونند که منابع این زبان برای یادگیری کم هستش و مقاله فارسی اصلا وجود نداره برای همین تصمیم گرفتم، تجربیات خودم رو براتون تو قالب مقالات و حتی پروژه های عملی به اشتراک بزارم تا به سبب اینکار خودمم توی زمینه برنامه نویسی Go پیشرفت کنم و یاد بگیرم.توی این ایام عید و بحث کروناویروس که همش خونه بودم و زمان آزاد زیادی داشتم شروع کردم به ساخت پروژه ای مثل ویرگول، و روی گیت هاب خودم گذاشتمشون که همه بتونند بهش دسترسی داشته باشند.برای دسترسی به این پروژه میتونید از اینجا استفاده کنید، ولی چون کدهاش هنوز کامل نیست برای همین روی Master هنوز Merge نکردمش پس برای دسترسی به آخرین تغییرات شما میتونید از این Branch به کدها دسترسی داشته باشید.توی این پروژه قراره این سرفصل ها رو با همدیگه یادشون بگیریم(البته هر کدوم این بخش ها دنیایی هستن که تا جایی که پروژه به ما اجازه بده اونا رو با همدیگه جلو میبریم):GoMongoDBJWTEcho frameworkMiddlewareCacheRedisLoggerخب بنطرم تا همین جا برای این مقاله کافیه و دوست ندارم زیاد طولانی باشه، توی مقالات بعدی هر بخش از پروژه بلاگمون رو بصورت عملی توضیح میدم. فقط گیت هاب منو فالو کنید تا بتونید به کدها دسترسی داشته باشید و من دیگه کدهارو اینجا کپی نمیکنم و قراره اینجا فقط هر بخش رو توضیح بدم. پس یادتون نره که گیت هاب منو حتما فالو کنید.</description>
                <category>مهدی رزاقی</category>
                <author>مهدی رزاقی</author>
                <pubDate>Fri, 03 Apr 2020 02:09:18 +0430</pubDate>
            </item>
            </channel>
</rss>