Time Complexity
Time Complexity
سوالتون بسیار گنگ هستش!!!
( ما فرض می کنیم منظورتون پیچیرگی زمانی هستش)
شما نمی تونید برای همه مسائل الگوریتمی چند جمله ای اونم از نوع خطی O
بنویسید.
برای مثال شما هیچ اگوریتمی که مرتب سازی یک ارایه رو برحسب مقایسه کلید ها انجام می ده نمی تونید بنویسید که از مرتبه خطی باشه، بهترین اگرویتم از مرتبه O(nLogn) هستش . از این کمتر نمشه!
حالا شما اول برنامه ای باید بنویسید که درست کار کنه، یعنی اون چیزی که می خواید و می دید و به شما جواب درست و میده.
این مرحله اگه درست نباشه یعنی اصلا برنامه شما ارزش تحلیل نداره!
حالا بعد این مرحله باید برنامه تون تحلیل کنید و ببینید که نسبت به ورودی مسئله پیچیدگی زمانی چقدر می شه ( مثلا تعداد فراخوانی ها و یا فراخوانی های بازگشتی و یا تعداد دفعات اجرای یه For , از این داستانا .
حالا اگه دیدید برنامه متون مثلا ار مرتبه O(n^3) و مثلا از سه تا حلقه تو در تو تشکیل شده و یکی از این for ها می شه رو حذف کنید طوری که در تعداد اجرای حلقه های دیگه تاثیر نذاره و برنامه تون هم درست اجرا بشهhttp://www.www.www.iran-eng.ir/images/smilies/icon_surprised.gif ، می شه گفت حلا از مرتبه ON^2 داره برنامه تون اجرا می شه.
حالا بازم می تونید برنامه تون تحلیل کنید که ببینید بازم می شه بهینش کرد یا نه!
اینجوری می شه که شما می تونید به همچین الگوریتم هایی برسید به نظر من