ببین زمان اجرای حلقه دوم و سوم lg(n) نمیشه چون به ازای هر j توی حلقه دوم مقدار k توی حلقه سوم فرق داره درسته؟
یعنی وقتی j مقدارش ۱ باشه حلقه سوم ۱ بار اجرا میشه و وقتی j=2 باشه حلقه سوم ۲ بار اجرا میشه و وقتی j=4 باشه حلقه سوم ۴ بار اجرا میشه پس لگاریتمی تغییر نمیکنه.
حالا این تریس رو داشته باش:
j=1⟶1
j=2⟶2
j=4⟶4
j=8⟶8
و همینطوری ادامه بده.حال قبول داری j داره به صورت 2p تغییر میکنه.p از صفر شروع میشه.حالا این اجرا تا چه وقتی
ادامه پیدا میکنه؟
تا وقتی که 2p<n درسته؟یعنی وقتی که 2p1>n دیگه حلقه اجرا نمیشه.درسته؟
پس ما میتونیم یه تقریب بزنیم به این صورت که:2p≅n درست؟
حالا مجموع زمان اجراها رو محاسبه میکنیم:
20212223...2p=2p1−12−1=2p1−1≅n=θ(n)
حلقه اول هم که lg(n) پس زمان اجرای کل:n.lg(n)
اینجوری حلش کردم با تریس.یه عدد مثل ۴ رو در نظر گرفتم اینم از تریس:
i=1→j=1→1:::::::یعنی به ازای i=1 و j=1 یه بار اجرا میشه
i=2→j=2→2
i=2→j=4→4
i=3→j=3→3
i=3→j=6→6
i=3→j=9→9
i=4→j=4→4
i=4→j=8→8
i=4→j=12→12
i=4→j=16→16
برای بقیه عددها هم این ریتم هستش.حالا اگه به نحوه ی اجرا دقت کنی میبینی به ازای هر i یه سری عددی داریم با جمله اول i و جمله اخر i2 و تعداد جملات و قدر نسبت هم i هستش.خب مجموع سری حسابی رو که میدونیم چجوری به دست میاد خب حالا ما باید برای هر i این مجموع رو به دست بیاریم که میشه:
∑ni=0(ii2)∗i2=∑i22∑i32=θ(n4)
بفرمایید