User Tools

Site Tools


qna:misc:good-practices:scan-array-segments-in-parallel

Παράλληλη σάρρωση περιοχών πινάκων

Η σάρρωση, δηλαδή η “χρήση” (ή αναφορά ή εξέταση ή επεξεργασία ή τροποποίηση - το λέτε όπως θέλετε) δύο περιοχών πινάκων μπορεί να γίνει με διάφορους τρόπους.

Η σάρρωση μπορεί να έχει οποιοδήποτε σκοπό. Π.χ. τη σύγκριση των δύο περιοχών, την αντιγραφή ή την τροποποίησή τους.

“Προφανώς”:

  • η σάρρωση θα πρέπει να αφορά περιοχές με το ίδιο πλήθος στοιχείων, εδώ το θεωρούμε εκ των προτέρων γνωστό και αποθηκευμένο στη μεταβλητή L
  • μπορεί να αφορά δύο περιοχές του ίδιου πίνακα
  • η σάρρωση περιοχής πίνακα χρησιμοποιεί ένα βρόχο (εδώ είναι υλοποιημένο με for)

Ο πιο γενικός και ξεκάθαρος τρόπος, ο οποίος και προτείνεται, είναι η χρήση δύο διαφορετικων μεταβλητών ως δείκτες, έναν για κάθε περιοχή. Δείτε το παρακάτω υπόδειγμα για υποτιθέμενους πίνακες arrayA και arrayB:

int iA, iB, i;
 
for(i = 0, iA = αρχική_θέση_α_περιοχής, iB = αρχική_θέση_β_περιοχής; i < L; i++,iA++,iB++) {
    // εδώ κάντε ότι θέλετε με τα στοιχεία των δύο περιοχών χρησιμοποιώντας τα ως:
    // arrayA[iA] για το "τρέχον" στοιχείο της 1ης περιοχής (του 1ου πίνακα) και
    // arrayB[iB] για τη αντίστοιχο στοιχείο της 2ης περιοχής (του 2ου πίνακα)
}

Σημειώστε ότι τα παραπάνω γενικεύονται πολύ εύκολα για:

  • σάρρωση περιοχών και τριών ή περισσοτέρων πινάκων
  • σάρρωση περιοχών πινάκων, με αντίθετη φορά
  • σάρρωση περιοχών με διαφορετικό κριτήριο τερματισμού από το κοινό μήκος τους (L)
qna/misc/good-practices/scan-array-segments-in-parallel.txt · Last modified: 2022/05/11 00:04 by xallos