Υπολογιστές, Προγραμματισμός
Η δυαδική αναζήτηση είναι ένας από τους ευκολότερους τρόπους εύρεσης ενός στοιχείου σε έναν πίνακα
Πολύ συχνά, οι προγραμματιστές, ακόμα και οι αρχάριοι, αντιμετωπίζουν το γεγονός ότι υπάρχει ένας αριθμός αριθμών στον οποίο είναι απαραίτητο να βρεθεί ένας ορισμένος αριθμός. Αυτή η συλλογή ονομάζεται συστοιχία. Και για να βρείτε το σωστό στοιχείο σε αυτό, υπάρχουν πολλοί τρόποι. Αλλά το πιο απλό από αυτά είναι η δυαδική αναζήτηση. Ποια είναι η μέθοδος; Και πώς να υλοποιήσετε μια δυαδική αναζήτηση; Το Pascal είναι το απλούστερο περιβάλλον για την οργάνωση ενός τέτοιου προγράμματος, οπότε θα το χρησιμοποιήσουμε για μελέτη.
Πρώτον, θα αναλύσουμε ποια είναι τα πλεονεκτήματα αυτής της μεθόδου, τελικά, έτσι ώστε να κατανοήσουμε,
Λοιπόν, ποια είναι η αρχή αυτής της μεθόδου; Αμέσως αξίζει να πούμε ότι η δυαδική αναζήτηση δεν λειτουργεί σε κανέναν πίνακα, αλλά μόνο σε ένα ταξινομημένο σύνολο αριθμών. Σε κάθε επόμενο βήμα, λαμβάνεται το μέσο στοιχείο του πίνακα (αναφέρεται στον αριθμό στοιχείου). Αν ο επιθυμητός αριθμός είναι μεγαλύτερος από τον μέσο όρο, τότε όλα που βρίσκονται στα αριστερά, δηλαδή λιγότερο από το μέσο στοιχείο, μπορούν να απορριφθούν και να μην αναζητηθούν εκεί. Αντίθετα, εάν είναι μικρότερος από τον μέσο όρο, μεταξύ των αριθμών στα δεξιά, δεν μπορείτε να τα αναζητήσετε. Στη συνέχεια, θα επιλέξουμε μια νέα περιοχή αναζήτησης, όπου το πρώτο στοιχείο θα είναι το μεσαίο στοιχείο ολόκληρου του πίνακα, και το τελευταίο θα παραμείνει το τελευταίο. Ο μέσος αριθμός της νέας περιοχής θα είναι ¼ του συνόλου του τομέα, δηλαδή (το τελευταίο στοιχείο + το μέσο στοιχείο του συνόλου του πίνακα) / 2. Και πάλι, εκτελείται η ίδια λειτουργία - σύγκριση με τον μέσο αριθμό του πίνακα. Αν η επιθυμητή τιμή είναι μικρότερη από τον μέσο όρο, απορρίψτε τη δεξιά πλευρά και κάντε την ίδια μέχρι να βρεθεί αυτό το μεσαίο στοιχείο.
Φυσικά, ο καλύτερος τρόπος να εξετάσουμε το παράδειγμα είναι πώς να γράψουμε μια δυαδική αναζήτηση. Ο Pascal εδώ είναι κατάλληλος για όλους - η έκδοση δεν είναι σημαντική. Ας γράψουμε ένα απλό πρόγραμμα.
Θα έχει έναν πίνακα από 1 έως h που ονομάζεται "massiv", μια μεταβλητή που υποδηλώνει ένα χαμηλότερο όριο αναζήτησης, που ονομάζεται "niz", ένα ανώτερο όριο που ονομάζεται "verh", το μεσαίο στοιχείο αναζήτησης είναι "sredn". Και ο απαιτούμενος αριθμός είναι "isk".
Έτσι, ορίστε πρώτα τα ανώτερα και κατώτερα όρια του διαστήματος αναζήτησης:
Niz: = 1;
Verh: = h + 1.
Στη συνέχεια οργανώνουμε τον κύκλο "ενώ το κάτω μέρος είναι μικρότερο από το ανώτατο όριο":
Ενώ το niz
Σε κάθε βήμα, διαιρέστε το τμήμα κατά 2:
Sredn: = (niz + verh) div 2. {Χρησιμοποιήστε τη λειτουργία div επειδή διαιρούμε το υπόλοιπο}
Κάθε φορά που κάνουμε μια επιταγή. Εάν ο μέσος όρος είναι ίσος με τον επιθυμητό, διακόπτουμε τον κύκλο, αφού ήδη βρεθεί το επιθυμητό στοιχείο:
Εάν το sredn = isk τότε σπάσει.
Εάν το μεσαίο στοιχείο του πίνακα είναι μεγαλύτερο από αυτό που ψάχνουμε, απορρίπτουμε την αριστερή πλευρά, δηλαδή, εκχωρούμε το μεσαίο στοιχείο στο άνω όριο:
Αν το μαζικό [sredn]> isk τότε verh: = sredn;
Και αν το αντίθετο, τότε το κάνουμε το κατώτερο όριο:
Αλλιώς niz: = sredn;
Τέλος;
Αυτό είναι όλο που θα είναι στο πρόγραμμα.
Ας αναλύσουμε πώς θα φανεί η δυαδική μέθοδος στην πράξη. Πάρτε μια τέτοια διάταξη: 1, 3, 5, 7, 10, 12, 18 και αναζητήστε τον αριθμό 12 σε αυτό.
Συνολικά, έχουμε 7 στοιχεία, οπότε ο μέσος όρος θα είναι ο τέταρτος, η αξία του 7.
| 1 | 3 | 5 | 7ο | 10 | 12 | 18ο |
Δεδομένου ότι το 12 είναι μεγαλύτερο από 7, τα στοιχεία 1,3 και 5 μπορούν να απορριφθούν. Στη συνέχεια, έχουμε 4 αριθμούς αριστερά, 4/2 χωρίς το υπόλοιπο να είναι 2. Έτσι, το νέο μεσαίο στοιχείο θα είναι 10.
| 7ο | 10 | 12 | 18ο |
Εδώ το μέσο στοιχείο είναι ήδη 12, αυτός είναι ο απαιτούμενος αριθμός. Η εργασία έχει ολοκληρωθεί - ο αριθμός 12 βρίσκεται.
Similar articles
Trending Now