შეგიძლიათ ორობითი მოძებნოთ დაკავშირებულ სიაში?
შეგიძლიათ ორობითი მოძებნოთ დაკავშირებულ სიაში?

ვიდეო: შეგიძლიათ ორობითი მოძებნოთ დაკავშირებულ სიაში?

ვიდეო: შეგიძლიათ ორობითი მოძებნოთ დაკავშირებულ სიაში?
ვიდეო: Convert Binary Number in a Linked List to Integer | LeetCode 1290 | C++, Java, Python 2024, აპრილი
Anonim

დიახ, ორობითი ძებნა შესაძლებელია დაკავშირებული სია თუ The სია შეკვეთილია და შენ იცოდე ელემენტების რაოდენობა სია . მაგრამ დახარისხებისას სია , შენ შეგიძლია წვდომა ერთ ელემენტზე ერთდროულად ამ კვანძის მაჩვენებლის საშუალებით, ანუ წინა ან შემდეგი კვანძისკენ.

ასე რომ, რა იქნება დროის სირთულე, როდესაც ორობითი ძიება გამოიყენება დაკავშირებულ სიაში?

დროის სირთულე არ უნდა იყოს O(log n)-ზე მეტი. როგორც დაკავშირებული სია აკეთებს არ მივცეთ შემთხვევითი წვდომა, თუ ჩვენ ვცდილობთ გამოიყენეთ ორობითი ძებნა ალგორითმი მას ნება მივაღწიოთ O(n) როგორც გვჭირდება იპოვე სიგრძეზე სია და გადადით შუაში.

ასევე იცით, როგორ ხორციელდება ორობითი ძებნა? ორობითი ძებნა : ძიება დალაგებული მასივი განმეორებით გაყოფით ძებნა ინტერვალი ნახევარში. დაიწყეთ ინტერვალით, რომელიც მოიცავს მთელ მასივს. თუ ღირებულება ძებნა გასაღები ნაკლებია, ვიდრე ელემენტი შუა ინტერვალით, დაიკლო ინტერვალი ქვედა ნახევარზე. წინააღმდეგ შემთხვევაში ვიწრო ზედა ნახევარზე.

აქედან გამომდინარე, რომელ მეთოდს იყენებს ბინარული ძებნა სიაში ელემენტის მოსაძებნად?

ორობითი ძებნა მუშაობს დახარისხებულ მასივებზე. ორობითი ძებნა იწყება შედარებით ელემენტი მასივის შუაში სამიზნე ღირებულება . თუ სამიზნე ღირებულება შეესაბამება ელემენტი , ბრუნდება მისი პოზიცია მასივში. თუ სამიზნე ღირებულება ნაკლებია ვიდრე ელემენტი , ძებნა გრძელდება მასივის ქვედა ნახევარში.

როგორ იმეორებთ დაკავშირებული სიის მეშვეობით?

ან იტერატორი შეიძლება გამოყენებულ იქნას მარყუჟისთვის მეშვეობით ან LinkedList . მეთოდი hasNext() აბრუნებს true თუ მასში მეტი ელემენტია LinkedList და ცრუ სხვაგვარად. მეთოდი next() აბრუნებს შემდეგ ელემენტს LinkedList და აგდებს გამონაკლისს NoSuchElementException, თუ არ არის შემდეგი ელემენტი.

გირჩევთ: