Πίνακας σε Δομή Δεδομένων (Operaσεις)

⚡ Έξυπνη Σύνοψη

Ο πίνακας στη Δομή Δεδομένων αποθηκεύει πολλά στοιχεία του ίδιου τύπου δεδομένων σε συνεχόμενες θέσεις μνήμης, καθεμία από τις οποίες είναι προσβάσιμη μέσω ενός ευρετηρίου. Αυτό το σεμινάριο εξηγεί την έννοια, γιατί οι πίνακες είναι σημαντικοί και πώς να τους δημιουργείτε και να τους χειρίζεστε στο Python, C++και Java με παραδείγματα.

  • 📦 Βασικός Ορισμός: Ένας πίνακας περιέχει πολλά στοιχεία ίδιου τύπου σε γειτονική μνήμη, στα οποία έχει πρόσβαση μέσω ευρετηρίου.
  • ⚡ Γρήγορη πρόσβαση: Οποιοδήποτε στοιχείο ανακτάται σε σταθερό χρόνο χρησιμοποιώντας τον δείκτη του.
  • ️ Πέντε Operations: Εισαγωγή, διαγραφή, αναζήτηση, ενημέρωση και διέλευση από το κιτ εργαλείων πίνακα.
  • 🌐 Διαγλωσσική προσέγγιση: Python χρησιμοποιεί τη λειτουργική μονάδα πίνακα. C++ και Java Δηλώστε πίνακες εγγενώς με χειροκίνητη λογική.
  • 🤖 Συνάφεια με την Τεχνητή Νοημοσύνη: Οι πίνακες υποστηρίζουν τους τανσόρους και τους πίνακες που τροφοδοτούν τους υπολογισμούς μηχανικής μάθησης.

Πίνακας σε Δομή Δεδομένων (Operaσεις)

Τι είναι το Array στη Δομή Δεδομένων;

An παράταξη είναι μια δομή δεδομένων για την αποθήκευση περισσότερων από ενός στοιχείων δεδομένων παρόμοιου τύπου. Τα στοιχεία ενός πίνακα κατανέμονται σε γειτονικές θέσεις μνήμης και αυτές οι θέσεις ονομάζονται στοιχεία του πίνακα. Ο συνολικός αριθμός στοιχείων σε έναν πίνακα είναι ο μήκος.

Κάθε στοιχείο είναι προσβάσιμο από τη θέση του και αυτή η αναφορά ονομάζεται ευρετήριο or υπογεγραμμένος.

Έννοια του πίνακα

Εννοιολογικό διάγραμμα συστοιχιών

Εννοιολογικό διάγραμμα συστοιχιών

Το παραπάνω διάγραμμα δείχνει ότι:

  1. Ένας πίνακας είναι ένα δοχείο στοιχείων.
  2. Τα στοιχεία έχουν μια συγκεκριμένη τιμή και τύπο δεδομένων, όπως "ABC", TRUE ή FALSE.
  3. Κάθε στοιχείο έχει το δικό του ευρετήριο, το οποίο χρησιμοποιείται για την πρόσβαση σε αυτό.

Σημείωση:

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

Το ακόλουθο διάγραμμα δείχνει τη σύνταξη για τη δήλωση ενός συστοιχία μέσα Python και C++, αποδεικνύοντας ότι η ιδέα παραμένει η ίδια παρόλο που η σύνταξη διαφέρει ελαφρώς μεταξύ των γλωσσών.

Κατανοήστε τη Σύνταξη Πίνακες

Κατανοήστε τη Σύνταξη Πίνακες

  • Όνομα πίνακα: απαραίτητο για εύκολη αναφορά στη συλλογή στοιχείων.
  • Τύπος δεδομένων: απαραίτητο για τον έλεγχο τύπου και την ακεραιότητα των δεδομένων.
  • Στοιχεία: οι τιμές δεδομένων που υπάρχουν στον πίνακα.

Γιατί χρειαζόμαστε πίνακες;

  • Οι πίνακες είναι ιδανικοί για την αποθήκευση πολλαπλών τιμών σε μία μόνο μεταβλητή.
  • Επεξεργάζονται πολλές τιμές εύκολα και γρήγορα.
  • Η ταξινόμηση και η αναζήτηση τιμών είναι ευκολότερη με τους πίνακες.

Δημιουργία πίνακα σε Python

In Python, οι πίνακες διαφέρουν από τις λίστες: μια λίστα μπορεί να περιέχει στοιχεία διαφορετικών τύπων δεδομένων, ενώ ένας πίνακας μπορεί να περιέχει μόνο στοιχεία του ίδιου τύπου δεδομένων. Python έχει μια ξεχωριστή ενότητα για τον χειρισμό πινάκων, που ονομάζεται array, το οποίο πρέπει να εισαγάγετε πριν το χρησιμοποιήσετε.

Σημείωση: Ο πίνακας πρέπει να περιέχει πραγματικούς αριθμούς όπως ακέραιους και κινητήριους αριθμούς. Δεν επιτρέπονται συμβολοσειρές.

Ο ακόλουθος κώδικας δημιουργεί έναν ακέραιο πίνακα σε Python για την αποθήκευση υπολοίπων λογαριασμών:

import array
balance = array.array('i', [300, 200, 100])
print(balance)

Τρόποι για να δηλώσετε έναν πίνακα μέσα Python

Μπορείτε να δηλώσετε έναν πίνακα μέσα Python ενώ το αρχικοποιεί χρησιμοποιώντας την ακόλουθη σύνταξη:

arrayName = array.array(typecode, [array_items])

Σύνταξη του Array in Python

Σύνταξη του Array in Python

  1. προσδιορίσει: Καθορίστε ένα όνομα όπως κάνετε συνήθως για τις μεταβλητές.
  2. Ενότητες: Python έχει μια ειδική ενότητα που ονομάζεται "array" την οποία πρέπει πρώτα να εισαγάγετε.
  3. Μέθοδος: Η ενότητα πίνακα έχει μια μέθοδο για την αρχικοποίηση του πίνακα, λαμβάνοντας δύο ορίσματα - typecode και στοιχεία.
  4. Πληκτρολογήστε τον κωδικό: καθορίστε τον τύπο δεδομένων χρησιμοποιώντας τους διαθέσιμους κωδικούς τύπου (δείτε τον παρακάτω πίνακα).
  5. Στοιχεία: καθορίστε τα στοιχεία του πίνακα μέσα σε αγκύλες, για παράδειγμα [130, 450, 103].

Ο παρακάτω πίνακας παραθέτει τους διαθέσιμους κωδικούς τύπου για τους υποστηριζόμενους τύπους δεδομένων.

Πληκτρολογήστε τον κωδικό C Τύπος Python Χαρακτηριστικά Ελάχιστο μέγεθος (byte)
'σι' υπογεγραμμένο char int 1
'ΣΙ' χωρίς υπογραφή char int 1
"εσύ" Py_UNICODE Χαρακτήρας Unicode 2
'h' υπογεγραμμένος σύντομος int 2
«Η» χωρίς υπογραφή σύντομο int 2
'Εγώ' υπογεγραμμένο ενθ int 2
'ΕΓΩ' χωρίς υπογραφή int int 2
'μεγάλο' υπογεγραμμένο μακρύ int 4
'ΜΕΓΑΛΟ' χωρίς υπογραφή πολύ int 4
'φά' φλοτέρ φλοτέρ 4
'ρε' διπλασιαστεί φλοτέρ 8

Πώς να αποκτήσετε πρόσβαση σε μια συγκεκριμένη τιμή πίνακα;

Μπορείτε να αποκτήσετε πρόσβαση σε οποιοδήποτε στοιχείο πίνακα χρησιμοποιώντας το ευρετήριό του.

Σύνταξη:

arrayName[indexNum]

Παράδειγμα:

balance[1]

Πρόσβαση σε ένα στοιχείο πίνακα

Πρόσβαση σε ένα στοιχείο πίνακα

Εδώ, αποκτήσαμε πρόσβαση στη δεύτερη τιμή του πίνακα χρησιμοποιώντας τον δείκτη 1. Η έξοδος είναι 200, η ​​οποία είναι η δεύτερη τιμή του πίνακα ισορροπίας.

import array
balance = array.array('i', [300, 200, 100])
print(balance[1])

Παραγωγή:

200

Παράταξη Operaθέσεις σε Python

The Python Η ενότητα πίνακα παρέχει ξεχωριστές συναρτήσεις για λειτουργίες πίνακα. Αυτές είναι καταστροφικές μέθοδοι, που σημαίνει ότι η τροποποίηση αποθηκεύεται στη μεταβλητή πίνακα.

Κύριο θέμα

Αυτή η λειτουργία εισάγει ένα ή περισσότερα στοιχεία σε έναν πίνακα στην αρχή, στο τέλος ή σε οποιοδήποτε δεδομένο ευρετήριο. Αναμένει δύο ορίσματα: index και value.

arrayName.insert(index, value)

Παράδειγμα: Για να εισαγάγετε μια νέα τιμή αμέσως μετά τον δείκτη 1 (την τιμή 200), αναφέρετε τον δείκτη 2 στη μέθοδο εισαγωγής.

import array
balance = array.array('i', [300, 200, 100])
balance.insert(2, 150)
print(balance)

Παραγωγή:

array('i', [300, 200, 150, 100])

Διαγραφή

Αυτή η λειτουργία διαγράφει ένα στοιχείο από έναν πίνακα κατά τιμή, αποδεχόμενη ένα μόνο όρισμα. Μετά την εκτέλεσή της, τα στοιχεία αναδιατάσσονται και οι δείκτες ανατίθενται ξανά.

arrayName.remove(value)

Παράδειγμα:

import array
balance = array.array('i', [300, 200, 150, 100])
balance.remove(150)
print(balance)

Παραγωγή:

array('i', [300, 200, 100])

Αναζήτηση

Αυτή η λειτουργία αναζητά ένα στοιχείο με βάση την τιμή και επιστρέφει τον δείκτη του. Είναι μια μη καταστροφική μέθοδος, επομένως δεν αλλάζει τις τιμές του πίνακα.

arrayName.index(value)

Παράδειγμα:

import array
balance = array.array('i', [300, 200, 150, 100])
print(balance.index(150))

Παραγωγή:

2

Ενημέρωση

Η ενημέρωση αντικαθιστά την υπάρχουσα τιμή σε ένα δεδομένο δείκτη χρησιμοποιώντας έναν απλό τελεστή ανάθεσης. (Python οι πίνακες δεν έχουν update() μέθοδος.)

arrayName[index] = value

Παράδειγμα: Για να αντικαταστήσετε το 150 (στον δείκτη 2) με το 145:

import array
balance = array.array('i', [300, 200, 150, 100])
balance[2] = 145
print(balance)

Παραγωγή:

array('i', [300, 200, 145, 100])

Τραβήξτε

Μπορείτε να διασχίσετε α Python πίνακας χρησιμοποιώντας έναν βρόχο:

import array
balance = array.array('i', [300, 200, 100])
for x in balance:
    print(x)

Παραγωγή:

300
200
100

Δημιουργία πίνακα σε C++

C++ είναι πιο ευέλικτο από Python κατά τη δημιουργία πινάκων. Μπορείτε να δημιουργήσετε C++ συστοιχίες με τρεις τρόπους. Ο ακόλουθος κώδικας δημιουργεί έναν ακέραιο πίνακα σε C++ για την αποθήκευση υπολοίπων λογαριασμών:

#include <iostream>
using namespace std;

int main()
{
  int balance[3] = { 300, 200, 100 };
  for (int i = 0; i < 3; i++)
    {
      cout << "value of i: " << balance[i] << endl;
    }
  return 0;
}

Τρόποι για να δηλώσετε έναν πίνακα μέσα C++

Μπορείτε να δηλώσετε έναν πίνακα με τρεις τρόπους, ανάλογα με τις απαιτήσεις του προγράμματός σας.

Δήλωση ανά μέγεθος:

dataType arrayName[arraySize];   // e.g. int balance[3];

Δήλωση μόνο με στοιχεία πίνακα:

dataType arrayName[] = {array_items};   // e.g. int balance[] = { 300, 200, 100 };

Δήλωση ανά μέγεθος και είδη:

dataType arrayName[arraySize] = {array_items};   // e.g. int balance[3] = { 300, 200, 100 };

Πώς να αποκτήσετε πρόσβαση σε μια συγκεκριμένη τιμή πίνακα σε C++?

Πρόσβαση σε ένα στοιχείο πίνακα

Πρόσβαση σε ένα στοιχείο πίνακα

#include <iostream>
using namespace std;

int main()
{
  int balance[3] = { 300, 200, 100 };
  cout << balance[1];
  return 0;
}

Παραγωγή:

200

Παράταξη Operaθέσεις σε C++

Σε αντίθεση με Pythonσε C++ Πρέπει να προγραμματίσετε μόνοι σας τη λογική για λειτουργίες εισαγωγής, διαγραφής, αναζήτησης, ενημέρωσης και διέλευσης.

Κύριο θέμα

Η λογική εισαγωγής είναι: επανάληψη των στοιχείων του πίνακα, μετατόπιση σε μεγαλύτερο δείκτη και, στη συνέχεια, προσθήκη ενός νέου στοιχείου στον δεδομένο δείκτη. Το παρακάτω παράδειγμα έχει πέντε στοιχεία και εισάγει το 150 αμέσως μετά την τιμή 200.

#include <iostream>
#include <stdio.h>

main() {
   int pos = 2;
   int size = 4;
   int balance[] = {300, 200, 100, 50, 0};

   printf("BEFORE INSERT:\n");
   for(int i = 0; i < 5; i++) {
      printf("%d\n", balance[i]);
   }

   /* SHIFT ITEMS TO A GREATER INDEX */
   for(int i = size; i >= pos; i--) {
       balance[i+1] = balance[i];
   }

   /* INSERT VALUE AT THE DESIRED INDEX */
   balance[pos] = 150;

   printf("AFTER INSERT:\n");
   for(int i = 0; i < 6; i++) {
      printf("%d\n", balance[i]);
   }
}

Παράταξη Operaθέσεις σε Java

Ας δημιουργήσουμε ένα πρόγραμμα στο Java που δέχεται το μέγεθος και τις τιμές των στοιχείων του πίνακα από τον χρήστη.

import java.util.Scanner;

public class AddElements {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("Enter the size of the array");
        int n = sc.nextInt();

        int arr[] = new int[n];

        System.out.println("Enter Elements in the array");
        for(int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        System.out.println("Elements in the array");
        for(int j = 0; j < n; j++) {
            System.out.print(arr[j] + " ");
        }
    }
}

Τροποποίηση ενός στοιχείου σε ένα Java Παράταξη

Ενημέρωση ενός στοιχείου με βάση τον δείκτη του.

import java.util.Scanner;

public class ModifyElement {
    public static void main(String[] args) {
        int arr[] = {1, 2, 3, 4, 5};
        int length = arr.length;
        Scanner sc = new Scanner(System.in);

        System.out.println("Array Elements Before modify");
        for(int i = 0; i < length; i++) {
            System.out.print(arr[i] + " ");
        }

        System.out.println("\nEnter the position to change");
        int pos = sc.nextInt();
        System.out.println("Enter the value");
        int val = sc.nextInt();

        arr[pos] = val;

        System.out.println("Array Elements After modify");
        for(int j = 0; j < length; j++) {
            System.out.print(arr[j] + " ");
        }
    }
}

Στοιχεία πρόσβασης σε ένα Java Παράταξη

Εκτυπώστε όλα τα στοιχεία του πίνακα διασχίζοντας τον πίνακα.

public class AccessElements {
    public static void main(String[] args) {
        int arr[] = {1, 2, 3, 4, 5};
        int length = arr.length;

        System.out.println("Array Elements are:-");
        for(int i = 0; i < length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

Συχνές Ερωτήσεις

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

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

Οι πέντε βασικές λειτουργίες είναι η εισαγωγή (προσθήκη ενός στοιχείου), η διαγραφή (αφαίρεση ενός στοιχείου), η αναζήτηση (εύρεση ενός στοιχείου με βάση την τιμή), η ενημέρωση (αλλαγή μιας τιμής σε ένα ευρετήριο) και η διέλευση (επισκέψη κάθε στοιχείου).

Η πρόσβαση σε ένα στοιχείο μέσω ευρετηρίου είναι O(1) — σταθερός χρόνος — επειδή η διεύθυνση μνήμης υπολογίζεται απευθείας από τη διεύθυνση βάσης και τον δείκτη. Η εισαγωγή και η διαγραφή μπορεί να είναι O(n) λόγω μετατόπισης.

Η συνεχής αποθήκευση επιτρέπει στο πρόγραμμα να υπολογίζει τη διεύθυνση οποιουδήποτε στοιχείου αμέσως από τη βασική διεύθυνση συν τον δείκτη επί το μέγεθος του στοιχείου. Αυτό είναι που δίνει στους πίνακες γρήγορη, τυχαία πρόσβαση σταθερού χρόνου.

Python χρειάζεται τη μονάδα πίνακα και προσφέρει ενσωματωμένες μεθόδους λειτουργίας. C++ και Java Δηλώνουν πίνακες εγγενώς, αλλά απαιτούν να κωδικοποιήσετε, να διαγράψετε και να αναζητήσετε μόνοι σας τη λογική. Java Οι πίνακες εκθέτουν επίσης μια ιδιότητα μήκους.

Οι πίνακες αποτελούν τη βάση των διανυσμάτων, των μητρών και των τανυστών που χρησιμοποιούνται στην Τεχνητή Νοημοσύνη. Βιβλιοθήκες όπως οι NumPy και TensorFlow αποθηκεύουν δεδομένα εκπαίδευσης και βάρη μοντέλων ως πολυδιάστατους πίνακες για γρήγορο αριθμητικό υπολογισμό.

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

Συνοψίστε αυτήν την ανάρτηση με: