منابع معمولاً به دو دسته تقسیم میشن:
-
منابع سختافزاری 🖥️: مثل RAM (حافظه اصلی)، CPU (زمان پردازنده)، حافظه کش، پهنای باند شبکه و فضای ذخیرهسازی. توی ساختمان داده، انتخاب نوع داده و الگوریتم مستقیماً روی مصرف این منابع تأثیر میذاره. مثلاً آرایه حافظه کمتری نسبت به لیست پیوندی میگیره ولی انعطاف کمتری داره.
-
منابع نرمافزاری 📁: مثل فایلها، سوکتهای شبکه، دیتابیس کانکشنها و قفلها (locks). این منابع معمولاً باید به صورت دستی مدیریت بشن و آزادسازی نکردنشون باعث نشتی (leak) میشه.
نکته کلیدی: توی طراحی الگوریتم، همیشه یه trade-off بین زمان و حافظه وجود داره. مثلاً استفاده از حافظه بیشتر (مثل کش کردن نتایج) میتونه سرعت اجرا رو ببره بالا، یا برعکس