(۲۸ دى ۱۳۹۲ ۰۶:۴۴ ب.ظ)Mindhunter نوشته شده توسط: (28 دى ۱۳۹۲ ۱۰:۰۸ ق.ظ)tayebe68 نوشته شده توسط: درود
مقسمی جواب رو گزینه ۳ اعلام کرده و توضیحی نداده.
چطور میشه اینکار رو در log n انجام داد؟
لطفا راهنمایی کنید
سلام دوست عزیز
سوال رو بدقت مطالعه کنید!!
آرایه کاملا مرتب هست ، پس میشه فهمید اعداد منفی ابتدا (کوچکترین ها) تا انتهای آرایه(بزرگترین) عدد قرار گرفته. روش حل معلومه، وسط آرایه رو در نظر میگیریم اگر اندیس آرایه با مقدار خانه برابر بود جوابه اگر کوچیکتر بود عملیاتو روی قسمت چپ آرایه و اگر بزرگتر بود عملیات رو به صورت بازگشتی روی قسمت راست آرایه تکرار میکنیم، خوب این در واقع همون جستجوی دودویی هست دیگه، که پیچیدگی زمانی برابر LOGn داره
اما دلیل نمیشه که چون کوچکتر بود، قسمت چپ رو بررسی کنیم. شاید عنصر با اندیس برابر توی قسمت راست باشه
بهتر بود اینطور میگفتید. که میانه رو بررسی میکنیم. اگه عدد میانه از اندیسش کوچکتر بود، قسمت راست رو بررسی میکنیم. چون میدونیم اعداد مرتب هستند و اعدادی که سمت چپ قرار میگیرند همشون از اندیسشون کوچکترن. اما سمت راست، مساوی یا برابرند.
اگر هم عدد از اندیسش بزرگتر بود، با همین روال، قسمت سمت چپ رو بررسی میکنیم