ویرگول
ورودثبت نام
متین تلخابی
متین تلخابی
خواندن ۲ دقیقه·۸ روز پیش

مرتبه زمانی (اردر) چیه ؟

مرتبه زمانی در اصل یه تخمینی از این هست که کدی که نوشتی قراره چقدر طول بکشه؟ آیا توی طولانی مدت راه تو درسته ؟ کارامده ؟ ....

به صورت کلی برای اینکه یه راه حلی بهترین باشه باید کمترین میزارن از حافظه رو اشغال کنه و سریع باشه که جفت اینا با یه الگوریتم خوب اوکی می شه

برای اینکه بتونید مرتبه زمانی یه الگوریتم رو بدست بیارین باید یه ورودی برای الگوریتم بزارید ما اسمش رو میزاریم n

حالا باید تعداد عملیات ها رو پیدا کنیم
عملیات هایی مثل جمع ، ضرب ، تقسیم و... کلا می تونیم یه عملیات حسابش کنیم
از طرفی وقتی یه عدد توی لوپ قرار می گیره بار اول به اندازه ورودی و توی لوپ دوم به توان دو می رسه یعنی می شه n^2 همونطور که واضحه وقتی این عدد یه مقدار بزرگ بشه کلا اون عملیات های کوچیک که دونه ای بودن به حساب نمیاد برای همین فقط عملیات هایی که n رو به عنوان ضریب دارن رو ما نگه می داریم

خوب بریم برای مثال:

این کد رو در نظر داشته باشید

cnt = 0 for i from 1 to n: for j from 1 to n: cnt = cnt + i * j

تعداد عملیات های کد بالا n^2 هست

cnt = 0 for i from 1 to n: for j from 1 to m: cnt = cnt + 1 for g from 1 to k: cnt = cnt + 1

تعداد عملیات های این کد n(m+k) هستش

حالا بیاید کاربر این نوع شمارش رو توی نمودار و مقایسه ببینیم

بیاین فرض کنیم که دو تا عملایت داریم که یکیشون n هست و (n^2 - n - 30 )/30 هم عملیات دوم هست


همونطور که می بینید عملیات دوم تا عدد 30 کمتر از عملیات اول مصرفشه برای همین برای اعداد کمتر از 30 عملیات دوم مناسب تره از جهتی بعد از 30 عملیات دوم به صورت نمایی بالا میره و عملیات اول به صورت خطی برای همینه الگوریتم بهینه تر الگوریتم اوله چون کمتر مصرف می کنه

اینم یه نمونه برای مقایسه کرن اردر ها



خوب فکر کنم برای این پست کافی باشه
اگه چیزی دیدی که من اشاره نکردم توی کامنت ها بگو



ان شاء الله راهی که میریم ختم بشه به ظهور سریعتر آقا امام زمان ...

الگوریتمبهینه نویسیبرنامه نویسیمرتبه زمانیاردر
برنامه‌نویس Back End مسلط به زبان‌های TailwindCSS، JavaScript، Python و فریم‌ورک Django. مشتاق یادگیری و پیشرفت
شاید از این پست‌ها خوشتان بیاید