Δυαδική Αναζήτηση και μετά σειριακή;

Ξεκίνησε από nikolasmer, Χθες στις 05:01:48 ΜΜ

« προηγούμενο - επόμενο »

nikolasmer

Έβγαλα ένα θεματάκι για ένα διαγώνισμα, κλασικότατο το 1ο ερώτημα , Δυαδική με κένά. Και έπειτα εύρεση όλων των θέσεων εμφάνισης του στοιχείου χωρίς τη χρήση δομής επιλογής. Κάτι είχα στο μυαλό μου σαν απάντηση για το 2ο ερώτημα, να κάνει σεριακή αριστερά και έπειτα δεξιά του στοιχείου αλλά μπορεί να είναι και ακριανό οπότε πάλι θέλει έλεγχο με επιλογή  (το βαλα μια μονάδα έτσι για την τιμή). Να το βγάλω ή υπάρχει τρόπος;

Β2. 1. Ο πίνακας Α[Ν] περιέχει ακέραια στοιχεία ταξινομημένα σε αύξουσα σειρά και μπορεί να περιέχει και ίδιες τιμές (διπλότυπα). Να συμπληρώσετε τα κενά στο παρακάτω τμήμα προγράμματος ώστε αυτό να βρίσκει και να εμφανίζει τη θέση εμφάνισης του στοιχείου key που αναζητείται ή το μήνυμα «ΔΕΝ ΒΡΕΘΗΚΕ» σε αντίστοιχη περίπτωση, εφαρμόζοντας τον αλγόριθμο της Δυαδικής Αναζήτησης.
flag ß  ...(1)...
θ ß 0
 left
ß 1
 right
ß N
 
ΟΣΟ ...(2)...  ΚΑΙ (left <= right) ΕΠΑΝΑΛΑΒΕ
    mid
ß ...(3)...
    ΑΝ A[mid] = key ΤΟΤΕ
      flag
<- ΑΛΗΘΗΣ
      θ ß mid
   
ΑΛΛΙΩΣ_ΑΝ A[mid] > key ΤΟΤΕ
      right
ß ...(4)...
    ΑΛΛΙΩΣ
  left ß ...(5)...
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ ...(6)... ΤΟΤΕ
    ΓΡΑΨΕ θ
 
ΑΛΛΙΩΣ
    ΓΡΑΨΕ "ΔΕΝ ΒΡΕΘΗΚΕ"
ΤΕΛΟΣ_ΑΝ
Μονάδες 6
2. Αφήνοντας το παραπάνω τμήμα προγράμματος ως έχει, συμπληρώστε με τον κατάλληλο κώδικα ώστε να υπολογίζει και να εμφανίζει όλες τις θέσεις που υπάρχει το στοιχείο key στον πίνακα Α[Ν], χωρίς τη χρήση δομής επιλογής. 
Μονάδες 1
Μερεντίτης Νικόλαος
Πληροφορικός