الگوریتم ها ابزارهای مشخصی برای حل مسائل هستند. شما می خواهید دو چیز در مورد یک الگوریتم بدانید:
آیا مشکل را حل می کند؟
آیا از منابع به نحو احسن استفاده می کند؟
اگر کدی می نویسید که مشکل را حل نمی کند، یا اگر مشکل را حل می کند اما از منابع به طور ناکارآمد استفاده می کند (مثلاً زمان زیادی طول می کشد یا از حافظه زیادی استفاده می کند)، کد شما واقعاً کمکی نمی کند. به همین دلیل ما الگوریتم ها را مطالعه می کنیم. ما می‌خواهیم بدانیم که کد ما مبتنی بر ایده‌هایی است که مشکل را حل می‌کنند و از منابع به‌طور کارآمد استفاده می‌کنیم. و ما می خواهیم بدانیم که راه حل ما برای همه موقعیت های ممکن صحیح و کارآمد است یا حداقل بدانیم که مواردی که الگوریتم ما نتواند این معیارها را برآورده کند نادر است. حتی اگر قصد دارید فقط توابع را در API ها فراخوانی کنید و خودتان الگوریتم ها را طراحی نکنید، باید در مورد الگوریتم ها و ساختار داده های مورد استفاده در پیاده سازی این API ها بدانید. هیچ ساختار داده ای بهترین انتخاب برای هر موقعیتی نیست، بنابراین باید نقاط قوت و ضعف هر کدام را بشناسید.