Δημοσιεύτηκε: 02 Απρ 2012, 19:31
από simosx
stamatiou έγραψε:
simosx έγραψε:
stamatiou έγραψε:Δηλαδή να το κάνω σειριακά;


Εννοείς «με ανάγνωση όλου του αρχείου στη μνήμη και τοποθέτηση σε πίνακα».
Πιστεύω ότι η εκφώνηση σε καθοδηγεί σε αυτό τον τρόπο, και έχοντας όλα τα δεδομένα σε ένα πίνακα μπορείς να ολοκληρώσεις εύκολα την αναζήτηση των ζευγαριών.
Όπως το βλέπω, δίχως τα δεδομένα σε πίνακα για άμεση προσπέλαση, θα πάρει αρκετή ώρα για να ολοκληρώσεις έναν πίνακα 1εκ τιμών.

Ναι αλλά πιο γρήγορα δεν θα γίνει η δουλειά αν δε διαβάσω ολόκληρο το αρχείο;


Για τη δουλειά που θέλεις να κάνεις, θα χρειαστεί να πηγαίνεις πίσω-εμπρός στα δεδομένα του αρχείου, ιδίως όταν τα ζευγάρια δεν είναι συνεχόμενα.
Δες για παραδειγμα,
Κώδικας: Επιλογή όλων
-10 -8 -7 -2 0 2 10

ή
Κώδικας: Επιλογή όλων
-10 -2 0 2 7 8 10


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