Βίντεο: Μπορείτε να κάνετε δυαδική αναζήτηση σε μια συνδεδεμένη λίστα;
2024 Συγγραφέας: Lynn Donovan | [email protected]. Τελευταία τροποποίηση: 2023-12-15 23:45
Ναί, Δυαδική αναζήτηση είναι δυνατό στο συνδεδεμένη λίστα εάν ο λίστα παραγγέλνεται και εσείς γνωρίζουν τον αριθμό των στοιχείων σε λίστα . Αλλά κατά την ταξινόμηση των λίστα , μπορείς πρόσβαση σε ένα μεμονωμένο στοιχείο κάθε φορά μέσω ενός δείκτη σε αυτόν τον κόμβο, δηλαδή είτε έναν προηγούμενο είτε τον επόμενο κόμβο.
Λοιπόν, ποια θα είναι η χρονική πολυπλοκότητα όταν εφαρμόζεται μια δυαδική αναζήτηση σε μια συνδεδεμένη λίστα;
Χρονική πολυπλοκότητα δεν πρέπει να είναι περισσότερο από O(log n). Οπως και συνδεδεμένη λίστα κάνει να μην παρέχουμε τυχαία πρόσβαση αν το προσπαθήσουμε εφαρμόστε δυαδική αναζήτηση αλγόριθμος αυτό θα φτάνουμε στο O(n) όπως χρειάζεται εύρημα μήκος του λίστα και πηγαίνετε στη μέση.
Επίσης, γνωρίζετε πώς υλοποιείται η δυαδική αναζήτηση; Δυαδική αναζήτηση : Αναζήτηση έναν ταξινομημένο πίνακα με επανειλημμένη διαίρεση του Αναζήτηση διάστημα στο μισό. Ξεκινήστε με ένα διάστημα που καλύπτει ολόκληρο τον πίνακα. Αν η τιμή του Αναζήτηση το κλειδί είναι μικρότερο από το στοιχείο στη μέση του διαστήματος, περιορίστε το διάστημα στο κάτω μισό. Διαφορετικά περιορίστε το στο πάνω μισό.
Επομένως, ποια μέθοδο χρησιμοποιεί η δυαδική αναζήτηση για να βρει ένα στοιχείο σε μια λίστα;
Δυαδική αναζήτηση λειτουργεί σε ταξινομημένους πίνακες. Δυαδική αναζήτηση ξεκινά συγκρίνοντας ένα στοιχείο στη μέση του πίνακα με τον στόχο αξία . Αν ο στόχος αξία ταιριάζει με το στοιχείο , επιστρέφεται η θέση του στον πίνακα. Αν ο στόχος αξία είναι μικρότερο από το στοιχείο , ο Αναζήτηση συνεχίζει στο κάτω μισό του πίνακα.
Πώς επαναλαμβάνετε μέσω μιας συνδεδεμένης λίστας;
Ενα Iterator μπορεί να χρησιμοποιηθεί για βρόχο διά μέσου ένα LinkedList . Η μέθοδος hasNext() επιστρέφει true εάν υπάρχουν περισσότερα στοιχεία LinkedList και ψεύτικο αλλιώς. Η μέθοδος next() επιστρέφει το επόμενο στοιχείο στο LinkedList και ρίχνει την εξαίρεση NoSuchElementException εάν δεν υπάρχει επόμενο στοιχείο.
Συνιστάται:
Πώς ταξινομώ μια συνδεδεμένη λίστα αλφαβητικά;
Η ταξινόμηση μιας συμβολοσειράς LinkedList σε Java είναι εύκολη. Μπορείτε να ταξινομήσετε τη συμβολοσειρά LinkedList σε αύξουσα αλφαβητική σειρά χρησιμοποιώντας sort(List list). Μπορείτε επίσης να ταξινομήσετε τη συμβολοσειρά LinkedList σε φθίνουσα αλφαβητική σειρά χρησιμοποιώντας sort(List list, Comparator c)
Πώς δημιουργείτε μια ταξινόμηση με φούσκα σε μια συνδεδεμένη λίστα στη C++;
Για να εκτελέσουμε ταξινόμηση με φυσαλίδες, ακολουθούμε τα παρακάτω βήματα: Βήμα 1: Ελέγξτε εάν τα δεδομένα στους 2 παρακείμενους κόμβους είναι σε αύξουσα σειρά ή όχι. Εάν όχι, αλλάξτε τα δεδομένα των 2 παρακείμενων κόμβων. Βήμα 2: Στο τέλος του περάσματος 1, το μεγαλύτερο στοιχείο θα βρίσκεται στο τέλος της λίστας. Βήμα 3: Τερματίζουμε τον βρόχο, όταν ξεκινήσουν όλα τα στοιχεία
Πώς συγκρίνεται μια διπλά συνδεδεμένη λίστα DLL με τη μοναδική συνδεδεμένη λίστα SLL);
Εισαγωγή στη λίστα με διπλή σύνδεση: Μια λίστα διπλής σύνδεσης (DLL) περιέχει έναν επιπλέον δείκτη, που συνήθως ονομάζεται προηγούμενος δείκτης, μαζί με τον επόμενο δείκτη και δεδομένα που βρίσκονται εκεί στη λίστα μεμονωμένα συνδεδεμένα. Το SLL έχει κόμβους με μόνο πεδίο δεδομένων και επόμενο πεδίο σύνδεσης. Το DLL καταλαμβάνει περισσότερη μνήμη από το SLL καθώς έχει 3 πεδία
Πώς διαγράφετε μια κυκλική συνδεδεμένη λίστα;
Διαγραφή από μια κυκλική συνδεδεμένη λίστα Εάν η λίστα δεν είναι κενή, τότε ορίζουμε δύο δείκτες curr και prev και αρχικοποιούμε το δείκτη curr με τον κόμβο κεφαλής. Διασχίστε τη λίστα χρησιμοποιώντας το curr για να βρείτε τον κόμβο που θα διαγραφεί και πριν μετακινήσετε το curr στον επόμενο κόμβο, ορίστε κάθε φορά prev = curr. Εάν βρεθεί ο κόμβος, ελέγξτε αν είναι ο μόνος κόμβος στη λίστα
Τι είναι η αναζήτηση στη συνδεδεμένη λίστα;
Αναζήτηση σε μεμονωμένα συνδεδεμένη λίστα. Η αναζήτηση εκτελείται για να βρεθεί η θέση ενός συγκεκριμένου στοιχείου στη λίστα. Εάν το στοιχείο ταιριάζει με οποιοδήποτε από τα στοιχεία της λίστας, τότε η θέση του στοιχείου επιστρέφεται από τη συνάρτηση