آیا می توانید یک لیست پیوندی را باینری جستجو کنید؟
آیا می توانید یک لیست پیوندی را باینری جستجو کنید؟

تصویری: آیا می توانید یک لیست پیوندی را باینری جستجو کنید؟

تصویری: آیا می توانید یک لیست پیوندی را باینری جستجو کنید؟
تصویری: جستجوی باینری در لیست پیوندی | توضیح کامل الگوریتم جستجوی باینری 2024, نوامبر
Anonim

آره، جستجوی باینری بر روی امکان پذیر است لیست پیوندی اگر را فهرست سفارش داده شده است و شما تعداد عناصر موجود در فهرست . اما در حالی که مرتب کردن فهرست , تو می توانی دسترسی به یک عنصر واحد در یک زمان از طریق یک اشاره گر به آن گره، یعنی گره قبلی یا گره بعدی.

بنابراین، زمانی که یک جستجوی دودویی در یک لیست پیوندی اعمال می شود، پیچیدگی زمانی چقدر خواهد بود؟

پیچیدگی زمانی نباید بیشتر از O(log n) باشد. مانند لیست پیوندی انجام می دهد اگر سعی کنیم دسترسی تصادفی را ارائه نکنیم جستجوی باینری را اعمال کنید الگوریتم آن اراده همانطور که نیاز داریم به O(n) برسیم پیدا کردن طول از فهرست و به وسط بروید.

همچنین بدانید، جستجوی باینری چگونه پیاده سازی می شود؟ جستجوی باینری : جستجو کردن یک آرایه مرتب شده با تقسیم مکرر جستجو کردن فاصله به نصف با فاصله ای شروع کنید که کل آرایه را پوشش می دهد. اگر مقدار از جستجو کردن کلید کمتر از آیتم در وسط فاصله است، فاصله را به نیمه پایینی باریک کنید. در غیر این صورت آن را به نیمه بالایی باریک کنید.

از این رو، جستجوی باینری از کدام روش برای یافتن یک عنصر در لیست استفاده می کند؟

جستجوی باینری روی آرایه های مرتب شده کار می کند. جستجوی باینری با مقایسه یک شروع می شود عنصر در وسط آرایه با هدف ارزش . اگر هدف ارزش مطابقت دارد عنصر ، موقعیت آن در آرایه برگردانده می شود. اگر هدف ارزش کمتر از عنصر ، جستجو کردن در نیمه پایینی آرایه ادامه می یابد.

چگونه از طریق یک لیست پیوندی تکرار می کنید؟

یک اشاره گر می توان برای حلقه استفاده کرد از طریق یک LinkedList . اگر عناصر بیشتری در آن وجود داشته باشد، متد hasNext() true را برمی‌گرداند LinkedList و در غیر این صورت نادرست. متد next() عنصر بعدی را برمی گرداند LinkedList و در صورتی که عنصر بعدی وجود نداشته باشد، استثنا NoSuchElementException را می اندازد.

توصیه شده: