Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Appunti sulle Abstract Data Type (ADT): Contenitori e Algoritmi di Ricerca, Schemi e mappe concettuali di Fondamenti di informatica

Una panoramica sui contenitori di dati basati su alberi (stack, queue, set) e sui dati strutturati come adt (unione, intersezione, sottrazione, map). Vengono presentati i metodi primitivi e le operazioni di base per ogni struttura dati, nonché le prestazioni associate. Il testo include anche una sezione su map e table, oltre a hash table e la loro implementazione.

Tipologia: Schemi e mappe concettuali

2020/2021

Caricato il 21/02/2021

albertopasqualetto
albertopasqualetto 🇮🇹

3.6

(5)

17 documenti

1 / 3

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
ADT 1
ADT
Tags Appunti
Tutti extends Container
Stack
Queue (anche coda circolare)
Set/Insieme (anche con array ordinato)
ADT per oggetti di tipo diverso senza un ordine interessante
Metodi primitivi:
void add(Object obj);
boolean contains(Object obj);
Object[] toArray();
Operazioni:
Unione
Intersezione
Sottrazione
Se array non ordinato:
Ricerca lineare
Aggiunta alla fine dell'array
Metodi primitivi
Operazioni
Unione= 2 toArray e add si occupa di non ripetere elementi
Intersezione= set1 toArray , lo scorro e se set2 contains , allora aggiungo
Sottrazione= come sopra ma se !contains
Se array ordinato SortedSet):
Aggiungo:
void add(Comparable obj);
Comparable[] toSortedArray();
Ricerca binaria
Aggiunta con insertion sort
Operazioni
O(n)
O(n)
2
O(logn)
O(n)
O(nlogn)
pf3

Anteprima parziale del testo

Scarica Appunti sulle Abstract Data Type (ADT): Contenitori e Algoritmi di Ricerca e più Schemi e mappe concettuali in PDF di Fondamenti di informatica solo su Docsity!

ADT

Tags Appunti

Tutti extends Container

Stack Queue (anche coda circolare) Set/Insieme (anche con array ordinato) ADT per oggetti di tipo diverso senza un ordine interessante Metodi primitivi: void add(Object obj); boolean contains(Object obj); Object[] toArray(); Operazioni: Unione Intersezione Sottrazione Se array non ordinato: Ricerca lineare Aggiunta alla fine dell'array Metodi primitivi Operazioni Unione = 2 toArray e add si occupa di non ripetere elementi Intersezione = set1 toArray , lo scorro e se set2 contains , allora aggiungo Sottrazione = come sopra ma se !contains Se array ordinato SortedSet): Aggiungo: void add(Comparable obj); Comparable[] toSortedArray(); Ricerca binaria Aggiunta con insertion sort Operazioni

O ( n )

O ( n^2 )

O ( logn )

O ( n )

O ( nlogn )

Unione = merge del mergeSort con passaggio in avanti di entrambi gli indici se elemento presente in entrambi i set/array Intersezione = scorro l'array principale, per ogni suo elemento scorro quello secondario e salto tutti gli elementi minori, se sono arrivato a fine array secondario break , se i due elementi sono uguali aggiungo e passo al prossimo elemento Sottrazione = uguale a sopra ma se i due elementi non sono uguali. Alla fine aggiungo tutti gli elementi dell'array principale non ancora controllati

Map (array ordinato e non), Table, Hash Table/Hash Table con bucket Contenitore di coppie chiave/valore con chiave Comparable e univoche usate come identificatori dell'oggetto Quindi i confronti e l'equals vanno fatti tra le chiavi delle coppie void insert(Comparable key, Object value); void remove(Comparable key); Object find(Comparable key);

Oggetto Pair : getKey getValue setKey setValue class MapItemNotFound

Se array non ordinato USO PER INSERIMENTI Operazioni Ricerca= lineare O(n) Inserimento= alla fine con prima ricerca Rimozione= con ricerca e poi spostamento dell'ultimo elemento

Se array ordinato USO PER RICERCA Ricerca= binaria Inserimento= con InsertionSort Rimozione= con ricerca e poi spostamento indietro di tutti gli elementi successivi

Table: Uso gli indici dell'array come chiavi Chiavi int

O ( n )

O ( logn )

O ( n )

O ( n )