Niz u strukturi podataka (Operacije)

⚡ Pametni sažetak

Niz u strukturi podataka pohranjuje više elemenata istog tipa podataka na susjednim memorijskim lokacijama, a svaka je dostupna putem indeksa. Ovaj vodič objašnjava koncept, zašto su nizovi važni i kako ih stvarati i raditi s njima u Python, C++i Java s primjerima.

  • ???? Osnovna definicija: Niz sadrži nekoliko elemenata istog tipa u susjednoj memoriji, kojima se pristupa putem indeksa.
  • ⚡ Brzi pristup: Bilo koji element se dohvaća u konstantnom vremenu koristeći svoj indeks.
  • 🛠️ Pet Operaticije: Umetanje, brisanje, pretraživanje, ažuriranje i pomicanje iz alata za nizove.
  • 🌐 Međujezičnost: Python koristi modul polja; C++ i Java deklarirati nizove izvorno s ručnom logikom.
  • 🤖 Relevantnost umjetne inteligencije: Nizovi podupiru tenzore i matrice koje pokreću izračune strojnog učenja.

Niz u strukturi podataka (Operacije)

Što je niz u strukturi podataka?

An poredak je podatkovna struktura za pohranjivanje više od jedne podatkovne stavke sličnog tipa. Stavke niza dodjeljuju se na susjednim memorijskim lokacijama, a te se lokacije nazivaju elementi niza. Ukupan broj elemenata u nizu je njegov dužina.

Svakom elementu se pristupa preko njegove pozicije, a ta referenca se naziva indeks or potpisan.

Koncept niza

Koncept dijagrama nizova

Koncept dijagrama nizova

Gornji dijagram ilustrira da:

  1. Niz je spremnik elemenata.
  2. Elementi imaju određenu vrijednost i tip podataka, kao što su „ABC“, TRUE ili FALSE.
  3. Svaki element ima svoj indeks, koji se koristi za pristup njemu.

Bilješka:

  • Elementi su pohranjeni na neprekidnim memorijskim lokacijama.
  • Indeks je uvijek manji od ukupnog broja stavki niza.
  • Bilo koja varijabla deklarirana kao niz može pohraniti više vrijednosti.
  • Gotovo svi jezici dijele isti koncept nizova, ali se razlikuju u načinu na koji ih deklariraju i inicijaliziraju.
  • Tri dijela ostaju zajednička u svim inicijalizacijama: naziv polja, elementi i tip podataka elemenata.

Sljedeći dijagram prikazuje sintaksu za deklariranje niz u Python i C++, što pokazuje da koncept ostaje isti iako se sintaksa neznatno razlikuje između jezika.

Razumijevanje sintakse nizova

Razumijevanje sintakse nizova

  • Naziv polja: potrebno za jednostavno pregledavanje kolekcije elemenata.
  • Vrsta podataka: potrebno za provjeru tipova i integriteta podataka.
  • Elementi: vrijednosti podataka prisutne u nizu.

Zašto su nam potrebni nizovi?

  • Nizovi su idealni za pohranjivanje više vrijednosti u jednoj varijabli.
  • Oni lako i brzo obrađuju mnoge vrijednosti.
  • Sortiranje i pretraživanje vrijednosti je lakše s nizovima.

Stvaranje niza u Python

In Python, nizovi se razlikuju od popisa: popis može sadržavati elemente različitih tipova podataka, dok niz može sadržavati samo elemente istog tipa podataka. Python ima zaseban modul za rukovanje nizovima, nazvan array, koji morate uvesti prije upotrebe.

Bilješka: Niz mora sadržavati realne brojeve kao što su cijeli brojevi i brojevi s pomičnim zarezom; stringovi nisu dopušteni.

Sljedeći kod stvara niz cijelih brojeva u Python za pohranu stanja računa:

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

Načini deklariranja niza u Python

Možete deklarirati niz u Python prilikom inicijalizacije koristeći sljedeću sintaksu:

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

Sintaksa polja u Python

Sintaksa polja u Python

  1. identifikator: navedite ime kao što to obično činite za varijable.
  2. Modul: Python ima poseban modul pod nazivom "array" koji prvo morate uvesti.
  3. Metoda: Modul polja ima metodu za inicijalizaciju polja, koja uzima dva argumenta - typecode i elemente.
  4. Kod tipa: odredite tip podataka koristeći dostupne tipske kodove (vidi tablicu u nastavku).
  5. Elementi: navedite elemente polja unutar uglatih zagrada, na primjer [130, 450, 103].

U donjoj tablici navedeni su kodovi tipova dostupni za podržane tipove podataka.

Unesite kod C Tip Python Tip Minimalna veličina (bajtovi)
'b' potpisani char int 1
"B" nepotpisani char int 1
'u' Py_UNICODE Unicode znak 2
'h' potpisan kratak int 2
"H" nepotpisani kratki int 2
'I' potpisan međ int 2
"Ja" nepotpisani int int 2
'l' potpisan dug int 4
"L" nepotpisano dugo int 4
'F' plutati plutati 4
'd' dvostruko plutati 8

Kako pristupiti određenoj vrijednosti niza?

Bilo kojem elementu niza možete pristupiti koristeći njegov indeks.

Sintaksa:

arrayName[indexNum]

Primjer:

balance[1]

Pristup elementu polja

Pristup elementu polja

Ovdje smo pristupili drugoj vrijednosti polja koristeći indeks 1. Izlaz je 200, što je druga vrijednost polja stanja.

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

Izlaz:

200

Poredak Operacije u Python

The Python Modul polja pruža odvojene funkcije za operacije s poljima. To su destruktivne metode, što znači da se modifikacija sprema u varijablu polja.

umetak

Ova operacija ubacuje jednu ili više stavki u niz na početak, kraj ili bilo koji zadani indeks. Očekuje dva argumenta: indeks i vrijednost.

arrayName.insert(index, value)

Primjer: Za umetanje nove vrijednosti odmah nakon indeksa 1 (vrijednost 200), referencirajte indeks 2 u metodi umetanja.

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

Izlaz:

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

Izbrisati

Ova operacija briše jednu stavku iz polja po vrijednosti, prihvaćajući jedan argument. Nakon što se izvrši, stavke se preuređuju i indeksi se ponovno dodjeljuju.

arrayName.remove(value)

Primjer:

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

Izlaz:

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

Traži

Ova operacija traži stavku po vrijednosti i vraća njen indeks. To je nedestruktivna metoda, tako da ne mijenja vrijednosti polja.

arrayName.index(value)

Primjer:

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

Izlaz:

2

Nadopune

Ažuriranje zamjenjuje postojeću vrijednost na danom indeksu pomoću jednostavnog operatora dodjeljivanja.Python nizovi nemaju update() metoda.)

arrayName[index] = value

Primjer: Za zamjenu 150 (na indeksu 2) sa 145:

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

Izlaz:

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

prijeći

Možete prijeći a Python niz pomoću petlje:

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

Izlaz:

300
200
100

Stvaranje niza u C++

C++ je fleksibilniji od Python prilikom stvaranja nizova. Možete stvoriti C++ nizovi na tri načina. Sljedeći kod stvara niz cijelih brojeva u C++ za pohranu stanja računa:

#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;
}

Načini deklariranja niza u C++

Niz možete deklarirati na tri načina, ovisno o zahtjevima vašeg programa.

Deklaracija po veličini:

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

Deklaracija samo s elementima niza:

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

Deklaracija po veličini i artiklima:

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

Kako pristupiti određenoj vrijednosti niza u C++?

Pristup elementu polja

Pristup elementu polja

#include <iostream>
using namespace std;

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

Izlaz:

200

Poredak Operacije u C++

Za razliku od Pythonu C++ Logiku za operacije umetanja, brisanja, pretraživanja, ažuriranja i pomicanja morate sami programirati.

umetak

Logika umetanja je: proći kroz elemente niza, pomaknuti ih na veći indeks, a zatim dodati novi element na zadanom indeksu. Primjer u nastavku ima pet elemenata i ubacuje 150 odmah nakon vrijednosti 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]);
   }
}

Poredak Operacije u Java

Napravimo program u Java koji prihvaća veličinu i vrijednosti elemenata niza od korisnika.

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] + " ");
        }
    }
}

Izmijenite element u Java Poredak

Ažuriranje elementa prema njegovom indeksu.

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] + " ");
        }
    }
}

Pristup elementima u Java Poredak

Ispišite sve elemente niza prolaskom kroz niz.

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] + " ");
        }
    }
}

Pitanja i odgovori

Niz je skup elemenata istog tipa podataka pohranjenih na susjednim memorijskim lokacijama. Svakom elementu pristupa se putem indeksa, što nizove čini učinkovitima za pohranjivanje i dohvaćanje više povezanih vrijednosti.

A Python Popis može sadržavati stavke različitih tipova podataka, dok niz (iz modula niza) sadrži stavke jednog tipa podataka. Nizovi su memorijski učinkovitiji za velike skupove numeričkih podataka.

Pet osnovnih operacija su umetanje (dodavanje stavke), brisanje (uklanjanje stavke), pretraživanje (pronalaženje stavke po vrijednosti), ažuriranje (promjena vrijednosti na indeksu) i kretanje (posjeta svakom elementu).

Pristup elementu po indeksu traje O(1) — konstantno vrijeme — jer se memorijska adresa izračunava izravno iz osnovne adrese i indeksa. Umetanje i brisanje može trajati O(n) zbog pomicanja.

Kontinuirana pohrana omogućuje programu trenutno izračunavanje adrese bilo kojeg elementa iz bazne adrese plus indeksa pomnoženo s veličinom elementa. To je ono što nizovima daje brz, konstantan vremenski slučajni pristup.

Python Treba modul polja i nudi ugrađene metode rada. C++ i Java deklarirati nizove izvorno, ali zahtijevaju da sami kodirate logiku umetanja, brisanja i pretraživanja. Java Nizovi također otkrivaju svojstvo duljine.

Nizovi su temelj vektora, matrica i tenzora koji se koriste u umjetnoj inteligenciji. Biblioteke poput NumPy i TensorFlow pohranjuju podatke za obuku i težine modela kao višedimenzionalne nizove za brzo numeričko računanje.

Da. Pomoćnici za kodiranje umjetne inteligencije otkrivaju pogreške indeksa izvan granica i izvan njih, predlažu ispravke i objašnjavaju zašto je indeks premašio duljinu polja, helpping početnici brzo rješavaju uobičajene greške u nizovima.

Sažmite ovu objavu uz: