⚡

آموزش مقدماتی الگوریتم

در کمتر از ۱۵ دقیقه، مفاهیم پایه الگوریتم، مرتب‌سازی و پیچیدگی زمان را یاد بگیرید. بدون نیاز به پیش‌زمینه سنگین — فقط با کمی دقت!

۱۵ دقیقه مقدماتی رایگان
پیشرفت یادگیری: ۰ از ۶ مفهوم ۰٪

۱ الگوریتم چیست؟

الگوریتم مجموعه‌ای از دستورات مرحله‌به‌مرحله و محدود است که یک مسئله را حل می‌کند. مثل دستور پخت غذا: مواد اولیه می‌گیرد (ورودی)، مراحل را اجرا می‌کند (پردازش)، و نتیجه می‌دهد (خروجی).

ویژگی‌های یک الگوریتم خوب:

  • محدود بودن: باید بعد از تعداد محدودی مرحله تمام شود.
  • دقیق بودن: هر مرحله باید واضح و بدون ابهام باشد.
  • ورودی و خروجی مشخص: بداند چه می‌گیرد و چه می‌دهد.
مثال ساده: الگوریتم «پیدا کردن بزرگ‌ترین عدد در یک لیست»: از اول شروع کن، هر عدد را با بزرگ‌ترین عدد فعلی مقایسه کن، اگر بزرگ‌تر بود جایگزین کن. در پایان، بزرگ‌ترین عدد را داری.

۲ مرتب‌سازی (Sorting)

مرتب‌سازی یکی از پرکاربردترین عملیات در برنامه‌نویسی است: چیدن داده‌ها به ترتیب صعودی یا نزولی. الگوریتم‌های مختلفی برای این کار وجود دارد که هر کدام ویژگی‌های خودشان را دارند.

سه الگوریتم معروف:

  • Bubble Sort (حبابی): ساده اما کند. هر بار دو عدد مجاور را مقایسه و جابجا می‌کند.
  • Merge Sort (ادغامی): سریع و پایدار. لیست را به دو نیم تقسیم می‌کند، هر نیم را مرتب می‌کند، سپس ادغام می‌کند.
  • Quick Sort (سریع): سریع‌ترین در عمل. یک عنصر «محور» انتخاب می‌کند و لیست را به دو بخش کوچک‌تر و بزرگ‌تر تقسیم می‌کند.

شبیه‌ساز مرتب‌سازی حبابی

برای شروع، روی «شروع مرتب‌سازی» کلیک کنید. هر مرحله را می‌بینید.

۳ پیچیدگی زمان (Time Complexity)

پیچیدگی زمان معیاری است برای سنجش اینکه یک الگوریتم «چقدر سریع» اجرا می‌شود. به‌جای اندازه‌گیری زمان واقعی (که به کامپیوتر بستگی دارد)، تعداد عملیات‌ها را بر حسب اندازهٔ ورودی (n) می‌شماریم.

مثال: اگر الگوریتمی برای مرتب‌سازی ۱۰ عدد، ۱۰۰ عملیات انجام دهد و برای ۱۰۰ عدد، ۱۰۰۰۰ عملیات، پیچیدگی‌اش O(n²) است — چون تعداد عملیات با مربع n رشد می‌کند.

چرا مهم است؟ یک الگوریتم O(n²) برای ۱۰۰۰ عدد ۱۰۰۰ برابر کندتر از O(n) است. در پروژه‌های واقعی، انتخاب الگوریتم درست تفاوت بین «۱ ثانیه» و «۱ ساعت» است!

۴ نماد Big-O

Big-O نمادی است که «مرتبهٔ رشد» یک الگوریتم را نشان می‌دهد. به‌جای فرمول دقیق، می‌گوید در بدترین حالت، تعداد عملیات‌ها چطور با n رشد می‌کند.

مراتب رایج (از سریع‌ترین به کندترین):

مرتبه نام مثال برای n=1000
O(1) ثابت دسترسی به آرایه با ایندکس ۱ عملیات
O(log n) لگاریتمی جستجوی دودویی (Binary Search) ~۱۰ عملیات
O(n) خطی جستجوی خطی، پیمایش آرایه ۱۰۰۰ عملیات
O(n log n) خطی-لگاریتمی Merge Sort, Quick Sort ~۱۰۰۰۰ عملیات
O(n²) درجه دوم Bubble Sort, Insertion Sort ۱،۰۰۰،۰۰۰ عملیات
O(2ⁿ) نمایی الگوریتم‌های brute force عدد نجومی!
قانون ساده: هر چه Big-O کوچک‌تر، الگوریتم سریع‌تر. همیشه سعی کنید از O(n²) به O(n log n) یا O(n) بروید.

۵ پیچیدگی فضا (Space Complexity)

پیچیدگی فضا معیاری است برای میزان حافظهٔ اضافی که یک الگوریتم مصرف می‌کند. مثلاً اگر الگوریتمی برای مرتب‌سازی نیاز به یک آرایهٔ کمکی هم‌اندازهٔ ورودی داشته باشد، فضایش O(n) است.

مثال: Bubble Sort فقط از یک متغیر موقت استفاده می‌کند → فضای O(1). اما Merge Sort نیاز به یک آرایهٔ کمکی دارد → فضای O(n).

نکته: در سیستم‌های محدود (مثل دستگاه‌های IoT یا موبایل) پیچیدگی فضا به‌اندازهٔ پیچیدگی زمان مهم است.

۶ ساختمان داده (Data Structure)

ساختمان داده روشی برای سازمان‌دهی داده‌ها در حافظه است تا عملیات‌ها (جستجو، درج، حذف) سریع‌تر انجام شوند. هر ساختمان داده برای کاربرد خاصی بهینه است.

ساختمان‌های داده اصلی:

  • آرایه (Array): دسترسی سریع با ایندکس (O(1))، اما درج/حذف کند.
  • لیست پیوندی (Linked List): درج/حذف سریع، اما دسترسی کند.
  • پشته (Stack): LIFO (آخرین ورودی، اولین خروجی) — مثل تاریخچهٔ مرورگر.
  • صف (Queue): FIFO (اولین ورودی، اولین خروجی) — مثل صف بانک.
  • درخت (Tree): برای جستجوی سریع — مثل درخت جستجوی دودویی (BST).
  • گراف (Graph): برای مدل‌سازی روابط — مثل شبکه‌های اجتماعی.
قانون طلایی: انتخاب ساختمان دادهٔ درست، نصف راه حل است! مثلاً برای جستجوی سریع، درخت یا هش‌تیبل بهتر از آرایه است.

آزمون کوتاه

۳ سوال — دانش خود را بسنجید!

۱) کدام مرتبهٔ پیچیدگی سریع‌ترین است؟
الف O(n²)
ب O(n log n)
ج O(1)
۲) کدام الگوریتم مرتب‌سازی برای داده‌های بزرگ سریع‌تر است؟
الف Bubble Sort
ب Merge Sort
ج Insertion Sort
۳) کدام ساختمان داده از اصل LIFO (آخرین ورودی، اولین خروجی) استفاده می‌کند؟
الف صف (Queue)
ب پشته (Stack)
ج آرایه (Array)
📚

جزوه‌های کامل کالاکن

مفاهیم پایه را یاد گرفتید؟ حالا جزوه‌های کامل و کاربردی را از کتابخانه کالاکن دانلود کنید. دو جزوهٔ تخصصی برای ادامهٔ مسیر یادگیری.

هر دو جزوه رایگان — برای اعضای کالاکن