Αλγόριθµοι Αναζήτησης και Ταξινόµησης Αναζήτηση 1. Σε πίνακα table[n] µε µοναδικά στοιχεία, αναζητούµε το στοιχείο key, Σειριακή ή Γραµµική Αναζήτηση. Αλγόριθµος Sequential_Search1 position 0 Όσο (done=ψευδής) και (i<=n) επανάλαβε position i Αποτελέσµατα //done, position // Τέλος Sequential_Search1 2. Σε πίνακα table[n] µε ΜΗ µοναδικά στοιχεία, αναζητούµε το στοιχείο key, Σειριακή ή Γραµµική Αναζήτηση. Αλγόριθµος Sequential_Search2 Εµφάνισε Ι, ''θέση'' Αν done= ψευδής τότε Εµφάνισε ''Δε βρέθηκε'' Τέλος Sequential_Search2 3. Σε πίνακα table[n] ταξινοµηµένο (αύξουσα) µε µοναδικά στοιχεία, αναζητούµε το στοιχείο key (τροποποιηµένη Σειριακή για πίνακα Ταξινοµηµένο). Αλγόριθµος Sequential_Search3 position 0 Όσο (done=ψευδής) και (i<=n) επανάλαβε position i Αλλιώς_αν key<table[i] τότε 1
Αν pos<>0 τότε Εµφάνισε pos, ''θέση'' Αλλιώς Εµφάνισε ''Δε βρέθηκε'' Τέλος Sequential_Search3 4. Σε πίνακα table[n] ταξινοµηµένο (αύξουσα) µε ΜΗ µοναδικά στοιχεία, αναζητούµε το στοιχείο key (τροποποιηµένη Σειριακή για πίνακα Ταξινοµηµένο). Αλγόριθµος Sequential_Search4 Βρέθηκε ß Ψευδής ΔενΒρέθηκε ß Αληθής Όσο ΔενΒρέθηκε = Αληθής και i<=n επανάλαβε Αν key = table[i] τότε Εµφάνισε Βρέθηκε στη θέση, i Βρέθηκε ß Αληθής Αλλιώς_αν key < table[i] τότε ΔενΒρέθηκε ß Ψευδής Αποτελέσµατα // Βρέθηκε // Τέλος Sequential_Search4 5. Δυαδική Αναζήτηση σε πίνακα table[n] ταξινοµηµένο (αύξουσα), αναζητούµε το στοιχείο key. Αλγόριθµος Δυαδική_Αναζήτηση Δεδοµένα // Ν, table, key // Left ß 1 Right ß N pos ß 0 done ß ψευδής όσο (Left<=Right) και (done=ψευδής) επανάλαβε M ß (Left+Right) div 2 αν table [M]= key τότε pos ß M done ß αληθής αν A[M]<S τότε Left ß M + 1 Right ß M 1 Αν done = αληθής τότε Εµφάνισε "Το στοιχείο,", S, "υπάρχει στη θέση:", Μ Αλλιώς Εµφάνισε "Το στοιχείο,", S, " δεν υπάρχει στον πίνακα" Τέλος Δυαδική_Αναζήτηση 2
Ταξινόµηση 1. Σε πίνακα table[n], αύξουσα, Ταξινόµηση Ευθείας Ανταλλαγής (φυσαλίδα). Αλγόριθµος Φυσσαλίδα Για j από 2 µέχρι n Τέλος Φυσσαλίδα 2. Σε πίνακα table[n], αύξουσα, Ταξινόµηση Ευθείας Ανταλλαγής (έξυπνη φυσαλίδα 1). Αλγόριθµος Έξυπνη_Φυσσαλίδα1 j ß 2 d ß αληθής d ß ψευδής j ß j + 1 Μέχρις_ότου d= αληθής ή j>n Τέλος Έξυπνη_Φυσσαλίδα1 3. Σε πίνακα table[n], αύξουσα, Ταξινόµηση Ευθείας Ανταλλαγής (έξυπνη φυσαλίδα 2). Αλγόριθµος Έξυπνη_Φυσσαλίδα2 k ß 0 j ß 2 d ß αληθής d ß ψευδής k ß i j ß k + 1 Μέχρις_ότου d= αληθής Τέλος Έξυπνη_Φυσσαλίδα2 3
4. Σε πίνακα table[n], αύξουσα, Ταξινόµησης Ευθείας Ανταλλαγής (φυσαλίδα) µε ανάποδη σειρά. Αλγόριθµος Φυσσαλίδα_ανάποδη Για j από n µέχρι 2 µε_βήµα -1 Για i από 1 µέχρι j-1 Αν table[i] > table[i+1] τότε αντιµετάθεσε table[i], table[i+1] Τέλος Φυσσαλίδα_ανάποδη 5. Σε πίνακα table[n], αύξουσα, Ταξινόµησης Ευθείας Ανταλλαγής (έξυπνη φυσαλίδα) µε ανάποδη σειρά. Αλγόριθµος Έξυπνη_ Φυσσαλίδα_ανάποδη j ß n Τ ß 0 Για i από 1 µέχρι j-1 Αν table[i] > table[i+1] τότε αντιµετάθεσε table[i], table[i+1] T ß i j ß T Μέχρις_ότου Τ=0 Τέλος Έξυπνη_ Φυσσαλίδα_ανάποδη 6. Σε πίνακα table[n], αύξουσα, Ταξινόµησης µε Επιλογή 1) Επιλέγω το µικρότερο στοιχείο του πίνακα 2) Ανταλλάσσω το µικρότερο στοιχείο του πίνακα µε το 1 ο 3) Επαναλαµβάνω τα παραπάνω βήµατα για τα υπόλοιπα στοιχεία του πίνακα 2 Ν, 3 Ν, κ.ο.κ. Αλγόριθµος Selection_Sort Για i από 1 µέχρι n-1 min ß table[i] min_pos ß i Για j από i+1 µέχρι n Αν min > table[j] Τότε min ß table[j] min_pos ß j Τέλος_Επανάληψης table[min_pos] ß table[i] table[i] ß min Τέλος_ επανάληψης Τέλος Selection_Sort 4
7. Σε πίνακα table[n], αύξουσα, Ταξινόµησης µε Εισαγωγή Γ ΛΥΚΕΙΟΥ 1) Μεταφέρω τα στοιχεία του πίνακα table[n] σε πίνακα Χ[N+1], από τη θέση 2 έως τη θέση N+1. Χ[Ι+1] ß table[i] 2) Ελέγχω κάθε στοιχείο του πίνακα µε τα προηγούµενα και µετακινώ τα στοιχεία προς τα δεξιά για να πάρουν την κατάλληλη θέση. Για i από 3 µέχρι n+1 temp ß X[i] X[1] ß temp j ß i - 1 Όσο temp<=x[j] επανάλαβε Χ[j+1] ß X[j] j ß j - 1 τέλος_επανάληψης Χ[j+1] ß temp 3) Μεταφέρω τα στοιχεία του πίνακα Χ[Ν+1] πίσω στον πίνακα table[n], από τη θέση 1 έως τη θέση Ν. table[ι] ß X[I+1] 5