Taulukko tietorakenteessa (Operations)

โšก ร„lykรคs yhteenveto

Tietorakenteiden taulukko tallentaa useita saman tietotyypin alkioita vierekkรคisiin muistipaikkoihin, joista jokainen on tavoitettavissa indeksin avulla. Tรคssรค opetusohjelmassa selitetรครคn taulukoiden kรคsite, miksi ne ovat tรคrkeitรค ja miten niitรค luodaan ja kรคsitellรครคn. Python, C++ja Java esimerkkien avulla.

  • ๐Ÿ“ฆ Ydinmรครคritelmรค: Taulukko sisรคltรครค useita samantyyppisiรค elementtejรค vierekkรคisessรค muistissa, joihin pรครคsee kรคsiksi indeksin avulla.
  • โšก Nopea pรครคsy: Mikรค tahansa alkio haetaan vakioajassa sen indeksin avulla.
  • ๐Ÿ› ๏ธ Viisi OperaTIONS: Lisรครค, poista, hae, pรคivitรค ja kรคy lรคpi taulukkotyรถkaluilla.
  • ๐ŸŒ Kielien vรคlinen: Python kรคyttรครค array-moduulia; C++ ja Java mรครคritรค taulukot natiivisti manuaalisella logiikalla.
  • ๐Ÿค– Tekoรคlyn merkitys: Taulukot tukevat tensoreita ja matriiseja, jotka tukevat koneoppimislaskelmia.

Taulukko tietorakenteessa (Operations)

Mikรค on Array tietorakenteessa?

An ryhmรค on tietorakenne, johon tallennetaan useampi kuin yksi saman tyyppinen tietoelementti. Taulukon alkiot varataan vierekkรคisiin muistipaikkoihin, ja nรคitรค paikkoja kutsutaan elementtejรค taulukosta. Taulukon alkioiden kokonaismรครคrรค on sen pituus.

Jokaiseen elementtiin pรครคstรครคn kรคsiksi sen sijainnin perusteella, ja tรคtรค viittausta kutsutaan indeksi or alaindeksi.

Array-konsepti

Taulukon kรคsitekaavio

Taulukon kรคsitekaavio

Yllรค oleva kaavio havainnollistaa sitรค:

  1. Taulukko on elementtien sรคiliรถ.
  2. Elementeillรค on tietty arvo ja tietotyyppi, kuten โ€ABCโ€, TRUE tai FALSE.
  3. Jokaisella elementillรค on oma indeksi, jota kรคytetรครคn sen kรคyttรคmiseen.

Huomautus:

  • Elementit tallennetaan vierekkรคisiin muistipaikkoihin.
  • Indeksi on aina pienempi kuin taulukon kohteiden kokonaismรครคrรค.
  • Mikรค tahansa taulukkona ilmoitettu muuttuja voi tallentaa useita arvoja.
  • Lรคhes kaikilla kielillรค on sama taulukoiden kรคsite, mutta ne eroavat toisistaan โ€‹โ€‹siinรค, miten ne deklaroivat ja alustavat ne.
  • Kolme osaa pysyy yhteisenรค kaikissa alustuksissa: taulukon nimi, elementit ja elementtien tietotyyppi.

Seuraava kaavio nรคyttรครค syntaksin, jolla mรครคritetรครคn joukko sisรครคn Python ja C++, mikรค osoittaa, ettรค kรคsite pysyy samana, vaikka syntaksi vaihtelee hieman kielten vรคlillรค.

Ymmรคrrรค taulukoiden syntaksi

Ymmรคrrรค taulukoiden syntaksi

  • Taulukon nimi: tarvitaan elementtikokoelman helppoa tarkastelua varten.
  • Tietotyyppi: tarvitaan tyyppitarkistukseen ja tietojen eheyden tarkistamiseen.
  • elementit: taulukossa olevat data-arvot.

Miksi tarvitsemme taulukoita?

  • Taulukot sopivat erinomaisesti useiden arvojen tallentamiseen yhteen muuttujaan.
  • Ne kรคsittelevรคt monia arvoja helposti ja nopeasti.
  • Arvojen lajittelu ja hakeminen on helpompaa taulukoiden avulla.

Array:n luominen sisรครคn Python

In Python, taulukot eroavat listoista: lista voi sisรคltรครค eri tietotyyppisiรค alkioita, kun taas taulukko voi sisรคltรครค vain saman tietotyypin alkioita. Python siinรค on erillinen moduuli taulukoiden kรคsittelyรค varten, nimeltรครคn array, joka sinun on tuotava ennen sen kรคyttรถรค.

Huomautus: Taulukon on sisรคllettรคvรค reaalilukuja, kuten kokonaislukuja ja liukulukuja; merkkijonoja ei sallita.

Seuraava koodi luo kokonaislukutaulukon Python tilin saldojen tallentamiseen:

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

Tapoja ilmoittaa taulukko sisรครคn Python

Voit ilmoittaa taulukon sisรครคn Python samalla kun se alustetaan seuraavalla syntaksilla:

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

Array in syntaksi Python

Array in syntaksi Python

  1. tunniste: mรครคritรค nimi kuten yleensรค muuttujille.
  2. Moduuli: Python sisรคltรครค erikoismoduulin nimeltรค โ€arrayโ€, joka sinun on tuotava ensin.
  3. Menetelmรค: Array-moduulilla on metodi taulukon alustamiseen, joka ottaa vastaan โ€‹โ€‹kaksi argumenttia โ€” typecode ja elements.
  4. Tyyppikoodi: Mรครคritรค tietotyyppi kรคyttรคmรคllรค kรคytettรคvissรค olevia tyyppikoodeja (katso alla oleva taulukko).
  5. elementit: Mรครคritรค taulukon alkiot hakasulkeissa, esimerkiksi [130, 450, 103].

Alla olevassa taulukossa luetellaan tuettujen tietotyyppien tyyppikoodit.

Kirjoita koodi C-tyyppi Python Tyyppi Minimikoko (tavua)
'b' allekirjoitettu merkki int 1
'B' allekirjoittamaton char int 1
"sinรค" Py_UNICODE Unicode-merkki 2
'h' allekirjoitettu lyhyesti int 2
'H' allekirjoittamaton lyhyt int 2
'I' allekirjoitettu int int 2
'I' allekirjoittamaton int int 2
'L' allekirjoitettu pitkรครคn int 4
'L' allekirjoittamaton pitkรค int 4
'F' kellua kellua 4
'd' kaksinkertainen kellua 8

Kuinka pรครคstรค kรคsiksi tiettyyn taulukon arvoon?

Voit kรคyttรครค mitรค tahansa taulukon alkiota sen indeksin avulla.

Syntaksi:

arrayName[indexNum]

Esimerkiksi:

balance[1]

Kรคytรค taulukkoelementtiรค

Kรคytรค taulukkoelementtiรค

Tรคssรค kรคytimme taulukon toista arvoa indeksin 1 avulla. Tuloste on 200, joka on saldotaulukon toinen arvo.

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

lรคhtรถ:

200

Ryhmรค Operasisรครคn Python

Python array-moduuli tarjoaa erilliset funktiot taulukkooperaatioille. Nรคmรค ovat destruktiivisia metodeja, eli muutos tallennetaan taulukkomuuttujaan.

liite

Tรคmรค toiminto lisรครค yhden tai useamman alkion taulukon alkuun, loppuun tai mihin tahansa annettuun indeksiin. Se odottaa kahta argumenttia: indeksiรค ja arvoa.

arrayName.insert(index, value)

Esimerkiksi: Jos haluat lisรคtรค uuden arvon heti indeksin 1 (arvo 200) jรคlkeen, viittaa indeksiin 2 lisรคysmetodissa.

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

lรคhtรถ:

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

Poista

Tรคmรค toiminto poistaa yhden alkion taulukosta arvon perusteella ja hyvรคksyy yhden argumentin. Suorituksen jรคlkeen alkiot jรคrjestetรครคn uudelleen ja indeksit mรครคritetรครคn uudelleen.

arrayName.remove(value)

Esimerkiksi:

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

lรคhtรถ:

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

Haku

Tรคmรค operaatio etsii alkiota arvon perusteella ja palauttaa sen indeksin. Se on ei-tuhoava menetelmรค, joten se ei muuta taulukon arvoja.

arrayName.index(value)

Esimerkiksi:

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

lรคhtรถ:

2

Pรคivitykset

Pรคivitys korvaa olemassa olevan arvon tietyssรค indeksissรค kรคyttรคmรคllรค yksinkertaista sijoitusoperaattoria.Python taulukoilla ei ole update() menetelmรค.)

arrayName[index] = value

Esimerkiksi: Korvaa 150 (indeksissรค 2) luvulla 145:

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

lรคhtรถ:

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

poikittainen

Voit kulkea a Python taulukko silmukan avulla:

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

lรคhtรถ:

300
200
100

Array:n luominen sisรครคn C++

C++ on joustavampi kuin Python taulukoita luotaessa. Voit luoda C++ taulukot kolmella tavalla. Seuraava koodi luo kokonaislukutaulukon C++ tilin saldojen tallentamiseen:

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

Tapoja ilmoittaa taulukko sisรครคn C++

Voit mรครคrittรครค taulukon kolmella tavalla ohjelmasi vaatimuksista riippuen.

Ilmoitus koon mukaan:

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

Mรครคrittely, jossa kรคytetรครคn vain taulukon alkioita:

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

Ilmoitus koon ja nimikkeiden mukaan:

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

Kuinka pรครคstรค kรคsiksi tiettyyn taulukon arvoon C++?

Matriisielementin kรคyttรคminen

Matriisielementin kรคyttรคminen

#include <iostream>
using namespace std;

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

lรคhtรถ:

200

Ryhmรค Operasisรครคn C++

Toisin kuin Pythonsisรครคn C++ Sinun on ohjelmoitava logiikka itse lisรคys-, poisto-, haku-, pรคivitys- ja lรคpikulkuoperaatioille.

liite

Lisรคyslogiikka on seuraava: kรคydรครคn lรคpi taulukon alkiot, siirretรครคn ne suurempaan indeksiin ja lisรคtรครคn sitten uusi alkio annettuun indeksiin. Alla olevassa esimerkissรค on viisi alkiota ja 150 lisรคtรครคn heti arvon 200 jรคlkeen.

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

Ryhmรค Operasisรครคn Java

Luodaan ohjelma sisรครคn Java joka hyvรคksyy kรคyttรคjรคltรค taulukon alkioiden koon ja arvot.

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

Muokkaa elementtiรค Java Ryhmรค

Pรคivitรค elementti sen indeksin perusteella.

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

Kรคytรค elementtejรค a:ssa Java Ryhmรค

Tulosta kaikki taulukon alkiot kรคymรคllรค lรคpi taulukon.

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

UKK

Taulukko on kokoelma saman tietotyypin alkioita, jotka on tallennettu vierekkรคisiin muistipaikkoihin. Jokaiseen alkioon pรครคsee kรคsiksi indeksin avulla, mikรค tekee taulukoista tehokkaita useiden toisiinsa liittyvien arvojen tallentamiseen ja hakemiseen.

A Python list voi sisรคltรครค eri tietotyyppisiรค kohteita, kun taas taulukko (taulukkomoduulista) sisรคltรครค vain yhden tietotyypin kohteita. Taulukot ovat muistitehokkaampia suurille numeerisille tietojoukoille.

Viisi perusoperaatiota ovat lisรคys (lisรครค kohde), poisto (poista kohde), haku (etsi kohde arvon perusteella), pรคivitys (muuta indeksin arvoa) ja lรคpikรคynti (kรคy jokaisessa elementissรค).

Elementin kรคyttรถ indeksin avulla on O(1) โ€“ vakioaika โ€“ koska muistiosoite lasketaan suoraan perusosoitteesta ja indeksistรค. Lisรคys ja poisto voivat olla O(n) siirron vuoksi.

Yhtenรคinen tallennus antaa ohjelman laskea minkรค tahansa elementin osoitteen vรคlittรถmรคsti perusosoitteesta plus indeksistรค kerrottuna elementin koko. Tรคmรค antaa taulukoille nopean, vakioaikaisen satunnaisen kรคytรถn.

Python tarvitsee taulukkomoduulin ja tarjoaa sisรครคnrakennettuja operaatiometodeja. C++ ja Java mรครคrittรคvรคt taulukot natiivisti, mutta vaativat sinua koodaamaan lisรคys-, poisto- ja hakulogiikan itse. Java Taulukot paljastavat myรถs length-ominaisuuden.

Taulukot ovat tekoรคlyssรค kรคytettyjen vektorien, matriisien ja tensorien perusta. Kirjastot, kuten NumPy ja TensorFlow, tallentavat harjoitusdataa ja mallien painoja moniulotteisina taulukoina nopeaa numeerista laskentaa varten.

Kyllรค. Tekoรคlykoodausavustajat havaitsevat yhden virheen ja rajojen ulkopuoliset indeksivirheet, ehdottavat korjauksia ja selittรคvรคt, miksi indeksi ylitti taulukon pituuden.ping aloittelijat ratkaisevat yleisiรค taulukkovirheitรค nopeasti.

Tiivistรค tรคmรค viesti seuraavasti: