Μπορείτε να κάνετε δυαδική αναζήτηση σε μια συνδεδεμένη λίστα;
Μπορείτε να κάνετε δυαδική αναζήτηση σε μια συνδεδεμένη λίστα;

Βίντεο: Μπορείτε να κάνετε δυαδική αναζήτηση σε μια συνδεδεμένη λίστα;

Βίντεο: Μπορείτε να κάνετε δυαδική αναζήτηση σε μια συνδεδεμένη λίστα;
Βίντεο: ΑΕΠΠ - Μάθημα 39 - Η Δυαδική Αναζήτηση 2024, Νοέμβριος
Anonim

Ναί, Δυαδική αναζήτηση είναι δυνατό στο συνδεδεμένη λίστα εάν ο λίστα παραγγέλνεται και εσείς γνωρίζουν τον αριθμό των στοιχείων σε λίστα . Αλλά κατά την ταξινόμηση των λίστα , μπορείς πρόσβαση σε ένα μεμονωμένο στοιχείο κάθε φορά μέσω ενός δείκτη σε αυτόν τον κόμβο, δηλαδή είτε έναν προηγούμενο είτε τον επόμενο κόμβο.

Λοιπόν, ποια θα είναι η χρονική πολυπλοκότητα όταν εφαρμόζεται μια δυαδική αναζήτηση σε μια συνδεδεμένη λίστα;

Χρονική πολυπλοκότητα δεν πρέπει να είναι περισσότερο από O(log n). Οπως και συνδεδεμένη λίστα κάνει να μην παρέχουμε τυχαία πρόσβαση αν το προσπαθήσουμε εφαρμόστε δυαδική αναζήτηση αλγόριθμος αυτό θα φτάνουμε στο O(n) όπως χρειάζεται εύρημα μήκος του λίστα και πηγαίνετε στη μέση.

Επίσης, γνωρίζετε πώς υλοποιείται η δυαδική αναζήτηση; Δυαδική αναζήτηση : Αναζήτηση έναν ταξινομημένο πίνακα με επανειλημμένη διαίρεση του Αναζήτηση διάστημα στο μισό. Ξεκινήστε με ένα διάστημα που καλύπτει ολόκληρο τον πίνακα. Αν η τιμή του Αναζήτηση το κλειδί είναι μικρότερο από το στοιχείο στη μέση του διαστήματος, περιορίστε το διάστημα στο κάτω μισό. Διαφορετικά περιορίστε το στο πάνω μισό.

Επομένως, ποια μέθοδο χρησιμοποιεί η δυαδική αναζήτηση για να βρει ένα στοιχείο σε μια λίστα;

Δυαδική αναζήτηση λειτουργεί σε ταξινομημένους πίνακες. Δυαδική αναζήτηση ξεκινά συγκρίνοντας ένα στοιχείο στη μέση του πίνακα με τον στόχο αξία . Αν ο στόχος αξία ταιριάζει με το στοιχείο , επιστρέφεται η θέση του στον πίνακα. Αν ο στόχος αξία είναι μικρότερο από το στοιχείο , ο Αναζήτηση συνεχίζει στο κάτω μισό του πίνακα.

Πώς επαναλαμβάνετε μέσω μιας συνδεδεμένης λίστας;

Ενα Iterator μπορεί να χρησιμοποιηθεί για βρόχο διά μέσου ένα LinkedList . Η μέθοδος hasNext() επιστρέφει true εάν υπάρχουν περισσότερα στοιχεία LinkedList και ψεύτικο αλλιώς. Η μέθοδος next() επιστρέφει το επόμενο στοιχείο στο LinkedList και ρίχνει την εξαίρεση NoSuchElementException εάν δεν υπάρχει επόμενο στοιχείο.

Συνιστάται: