(۱۶ بهمن ۱۳۹۳ ۰۴:۳۴ ب.ظ)tanhatarin نوشته شده توسط: (16 بهمن ۱۳۹۳ ۰۴:۲۸ ب.ظ)IT93 نوشته شده توسط: (16 بهمن ۱۳۹۳ ۰۴:۱۶ ب.ظ)rahhil نوشته شده توسط: (16 بهمن ۱۳۹۳ ۰۴:۱۰ ب.ظ)IT93 نوشته شده توسط: تو یه لیست مرتب صعودی با N عنصر یه C هم نوشته بود بعد گفته بود جمع اعداد بشه C از چه درجه ای بود؟یادتون اومد کدوم سوال رو میگم!
عزیز مگه بقیه چتدتاس همیشه n تاس.
یه جستجو logn
n تا جستجو nlogn
شما c رو داری nتای دیگه رو که نداری
صعودی گفته میشه logn
فرض?کن داری ۱ ۲ ۳ ۴ ۵ ۶ ....۱۰۰
C=20
اولا اعداد بزرگتر از ۲۰ حذف میشن
دوما میمونها ۱ ۲ ۳ ۴ ۵ ...۲۰
اینم نصف میکنیم وسطش میشه ۱۰یا عدد قبل و بعدش جع کن
۱۰+۹=۱۹
۱۰+۱۱=۲۱
چون طرف چپ کوچکتره حذف میکنیم میمون
۱۰ ۱۱ ۱۲///۲۰ و همینطور?ادامه بدی میبینی که به n هم نمیرسه چ برسه nlogn
=====
استاد در چنین سوالاتی مثل مرتب سازی تعداد مقایسه باید با بهترین روش بدترین حالت رو در نظر گرفت من حلشو دقیق بهش فکر نکردم اما جوابش n میشه
فرض کن c ما باندازه بزرگترین عدد باشه و اونم مقدارش از عدد قبلیش بسیار بیشتر باشه
نهایتا طراح مرض نداشته بگه مرتب بنظرم باهش باید حل بشه مهم مرتبه هست که n میشه
اقا log n میشد عین این سوال طورانی واسه ما حل کرد . کافیه جستجو دودویی کنی فقط دنبال این عنصر : a[i]+a[j]=x
بعد x داریم [a[i]=x-a[j حالا کافیه بگردی این عنصر که با جستجو دودویی میشه