جستجوی باینری رو هم میشه اضافه کرد اما مرتبه الگوریتم تغییری نمیکنه. چرا که به طور متوسط شما باید نصف اعضای لیست رو شیفت بدین.
در صورتی که از لیست پیوندی استفاده کنید پیچیدگی شیفت از بین میره اما باید لیست پیوندیای درست کنید که ایندکس داشته باشه و بتونید به وسط لیست به راحتی مراجعه کنید. فکر میکنم این کار باعث پیچیده شدن موضوع بشه در مجموع اینطور بگم:
۱. در صورتی که از یک آرایه ساده استفاده میکنید همچنان پیچیدگی شیفت وجود داره و پیچیدگی الگوریتم همان O(n2) است.
۲. در صورتی که از لیست پیوندی استفاده میکنید نمیتوانید از جستجوی باینری استفاده کنید! در این حالت پیچیدگی شیفت برابر ۱ است ولی پیچیدگی جستجو از مرتبه n است. بنابراین همچنان پیچیدگی الگوریتم O(n2) است.
۳. در صورتی که از لیست پیوندی ایندکس دار استفاده کنید. میتونید از جستجوی باینری استفاده کنید. در این حالت پیچیدگی شیفت هم برابر ۱ است اما نکته اینه که پیچیدگی بهروز کردن ایندکس همچنان از مرتبه n است و در نتیجه پیچیدگی کلی الگوریتم باز هم O(n2) است.
در هر حال این الگوریتم در حالت کلی O(n2) است و کاریش هم نمیشه کرد!!