Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OPPO Find X3 Pro: la prova su ''strada'' con Lamborghini
OPPO Find X3 Pro: la prova su ''strada'' con Lamborghini
Abbiamo avuto modo di provare il nuovo OPPO Find X3 Pro nella fantastica cornice del circuito di Modena e del Museo Lamborghini. Il nuovo top di gamma della casa cinese vanta un’innovativa fotocamera quadrupla, in grado di catturare scatti fotografici ad alta velocità, un SoC di ultima generazione della linea Qualcomm Snapdragon, tante funzionalità per la registrazione di video accattivanti, la capacità di memorizzare le foto nel formato a 10 bit e molto altro ancora
Leica SL2-S: qualità tedesca per foto e video
Leica SL2-S: qualità tedesca per foto e video
Leica SL2-S non è la sorella minore della SL2, ma una fotocamera con un'anima e caratteristiche tecniche profondamente diverse. L'utilizzo di un sensore BSI retroilluminato apre il campo a tutti i formati video fino al 4K 60p, ma offre anche indubbi benefici sul fronte fotografico, con un rapporto segnale/rumore trai i migliori sul mercato
Juice Booster 2 carica i veicoli elettrici con ogni presa della corrente
Juice Booster 2 carica i veicoli elettrici con ogni presa della corrente
Le necessità di ricarica delle batterie dei veicolo elettrici non sempre può essere risolta con una colonnina tradizionale. Giunge in aiuto Juice Booster 2, un caricatore portatile che attraverso una costruzione modulare può diventare compatibile con pressoché tutti i tipi di prese di corrente, sostituendo tanto il cavo per la colonnina come una wallbox nel garage
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-05-2021, 18:28   #1
zabnicola
Junior Member
 
Iscritto dal: Nov 2020
Messaggi: 24
Da struttura albero binario di ricerca a matrice/tabella. Come

Qualcuno sa spiegarmi come un albero binario di ricerca puo essere stampato in forma di tabella quindi a matrice a array multidimensionale.
Premetto che secondo me sono concetti diversi. Ma nei database esiste una rappresentazione tabellare dei dati e una in albero binario di ricerca.

Non trovo e capisco la corrispondenza tra i due.

Ultima modifica di zabnicola : 12-05-2021 alle 16:51.
zabnicola è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2021, 10:39   #2
zabnicola
Junior Member
 
Iscritto dal: Nov 2020
Messaggi: 24
Ho un array di 15 elements che lo suddivido in 3 righe * 5 colonne inizializzato cosi:
array[0] = 0
array[1] = 1
array[2] = 2
.
.
.
array[13] = 13
array[14] = 14

aggiungo tutti gli elementi nel BST, albero binario di ricerca. Come si stampa un BST affinchè mi stampi le celle in ordine se queste sono inserite nell'albero in modo sparso?
quale visita dovrei usare: in ordine, pre ordine o post ordine?
zabnicola è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2021, 11:23   #3
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2658
Se visualizzi mentalmente (o su carta) un albero binario di ricerca, ogni nodo contiene nel ramo sinistro tutti i valori minori del nodo corrente e nel ramo destro tutti quelli maggiori.

Se devi stampare i valori in ordine quindi devi stampare prima il ramo sinistro, poi il nodo stesso e infine il ramo destro.

La domanda del tuo primo post non mi è chiara, provo a rispondere sulla questione dei database. Cerco di farla semplice per rendere tutto più comprensibile, in realtà ci sarebbero molti dettagli in più da considerare ma la sostanza di fondo non cambia.

Nei database i dati sono salvati in forma tabellare, record dopo record.
Senza meccanismi aggiuntivi, per cercare un record dovresti scorrerli tutti uno a uno e verificare se il record che stai controllando ti interessa o meno.
Per rendere più efficienti le operazioni di ricerca si possono costruire degli indici che sono appunto alberi di ricerca in cui ogni nodo contiene il valore indicizzato e un riferimento al record.
Ad esempio se tu hai una tabella anagrafica di persone con all'interno nome, cognome, indirizzo, eccetera, potresti creare un indice sul campo cognome. Allora il tuo albero di ricerca conterrà un nodo per ogni cognome e all'interno dello stesso nodo ci sarà il riferimento al record corrispondente. Quando esegui una ricerca per cognome, invece di scorrerti tutti i record uno a uno, esegui una ricerca sull'albero e quando trovi una corrispondenza hai subito il riferimento al record completo.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2021, 12:41   #4
zabnicola
Junior Member
 
Iscritto dal: Nov 2020
Messaggi: 24
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Se visualizzi mentalmente (o su carta) un albero binario di ricerca, ogni nodo contiene nel ramo sinistro tutti i valori minori del nodo corrente e nel ramo destro tutti quelli maggiori.

Se devi stampare i valori in ordine quindi devi stampare prima il ramo sinistro, poi il nodo stesso e infine il ramo destro.

La domanda del tuo primo post non mi è chiara, provo a rispondere sulla questione dei database. Cerco di farla semplice per rendere tutto più comprensibile, in realtà ci sarebbero molti dettagli in più da considerare ma la sostanza di fondo non cambia.

Nei database i dati sono salvati in forma tabellare, record dopo record.
Senza meccanismi aggiuntivi, per cercare un record dovresti scorrerli tutti uno a uno e verificare se il record che stai controllando ti interessa o meno.
Per rendere più efficienti le operazioni di ricerca si possono costruire degli indici che sono appunto alberi di ricerca in cui ogni nodo contiene il valore indicizzato e un riferimento al record.
Ad esempio se tu hai una tabella anagrafica di persone con all'interno nome, cognome, indirizzo, eccetera, potresti creare un indice sul campo cognome. Allora il tuo albero di ricerca conterrà un nodo per ogni cognome e all'interno dello stesso nodo ci sarà il riferimento al record corrispondente. Quando esegui una ricerca per cognome, invece di scorrerti tutti i record uno a uno, esegui una ricerca sull'albero e quando trovi una corrispondenza hai subito il riferimento al record completo.
grazie per la risposta. In parte mi hai risposto. Quindi utilizzeresti il BST solo per creare degli indici sui campi della tabella anagrafica. Ma serve anche a qualcuno altro questo discorso? comunque.

Ho di recente creato in C una tabella che si puo ridimensionare a piacere in righe e colonne di diversi tipi: char*, int, float.
Se volessi proseguire con l'esperimento del database scritto in C devo fare delle JOIN Prendiamo come esempio persona e libro: persona[3][5]; libro[6][5];

N libri sono di una persona.
Faccio un operazione di JOIN tra persona e libri cercando due titoli di libri per vedere chi li ha.
Quindi se seleziono i nomi "linguaggio c fondamenti" e "il piccolo principe" mi restituisce
rispettivamente gli utenti zabit e bigendian.

1 | zabit | linguaggio c fondamenti
2 | bigendian | il piccolo principe

Come si realizza il prodotto cartesiano tra persona e libro utilizzando la matrice?

come vedi queste operazioni se rappresento tutto con le matrici cioè vettori non risultano semplici o comode. Ce un altro modo?
zabnicola è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2021, 15:24   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2658
Secondo me non è semplice e comodo perché è intrinsecamente un'operazione abbastanza complessa e inoltre farlo in C lo è ancora di più perché il linguaggio non ha molti costrutti per semplificare il codice.

Potresti definire il risultato del join di 2 tabelle A e B con una matrice di 2 colonne: la prima colonna contiene il puntatore al record della tabella A e la seconda colonna contiene il puntatore al record di B.
Poi quando vuoi selezionare particolari colonne delle due tabelle lo fai tramite i puntatori.

Ma tu stai usando gli array per le colonne perché vuoi che la struttura sia dinamica? Perché se la struttura è ben definita puoi usare delle struct che sono molto più comode e leggibili.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2021, 16:46   #6
zabnicola
Junior Member
 
Iscritto dal: Nov 2020
Messaggi: 24
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Ma tu stai usando gli array per le colonne perché vuoi che la struttura sia dinamica? Perché se la struttura è ben definita puoi usare delle struct che sono molto più comode e leggibili.
Per la struttura della tabella dinamica non è un problema.
Ho implementato il codice per avere una tabella in C che puo essere ridimensionata a piacere. Alla fine si accede come "se fosse statica" ossia table[2][4].

Cosi ho una tabella A accessibile con tableA[2][4] e un'altra tabella B accessibile anch'essa con tableB[0][1]. tabella A ha 3 righe e 5 colonne, la tabella B ha 6 righe e 7 colonne. Mettere in Join senza alcuna selezione significa fare prima riga per tutte le righe dell'altra tabella, seconda riga per tutte le righe dell'altra tabella e mostrare le colonne della tabella sia di A,B. Quindi dovrei creare una terza tabella che ha 18 righe e 12 colonne, copiando tutte le colonne della prima riga di A con la prima riga di B, della prima riga di A con la seconda di B, con la prima riga di A con la terza di B fino alla sesta di B.
zabnicola è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OPPO Find X3 Pro: la prova su ''strada'' con Lamborghini OPPO Find X3 Pro: la prova su ''strada'' con Lam...
Leica SL2-S: qualità tedesca per foto e video Leica SL2-S: qualità tedesca per foto e v...
Juice Booster 2 carica i veicoli elettrici con ogni presa della corrente Juice Booster 2 carica i veicoli elettrici con o...
GeForce RTX 3070 Ti, recensione: Founders Edition vs Inno3D X3 OC GeForce RTX 3070 Ti, recensione: Founders Editio...
EnGenius ECS1528P, uno switch PoE a 24 porte ideale per la videosorveglianza EnGenius ECS1528P, uno switch PoE a 24 porte ide...
Amazon oggi: Xiaomi Mi 11 Lite 6/128GB 2...
Fujifilm vittima di un ransomware, ora l...
WISA Woodsat: il primo satellite fatto d...
La NASA annuncia il periodo di lancio e ...
Razer, il primo portatile con CPU AMD: s...
IBM contro GlobalFoundries: vuole 2,5 mi...
E3 2021: Xbox e Bethesda intrattengono, ...
Elon Musk gioca Cyberpunk 2077 su una Te...
Beats presenta i nuovi Studio Buds: gli ...
OnePlus Nord CE 5G: un po' anonimo e spa...
Entro il 2022 più smartphone 5G c...
Google annuncia Google Workspace per tut...
The Sandbox: come creare videogiochi e g...
Presentato il nuovo obiettivo Laowa 7.5m...
NASA SLS: lo stadio principale è stato p...
K-Lite Codec Pack Update
K-Lite Mega Codec Pack
K-Lite Codec Pack Full
K-Lite Codec Pack Standard
K-Lite Codec Pack Basic
CrystalDiskInfo
Dropbox
Chromium
LibreOffice 7.1.4
Advanced SystemCare Ultimate
PeaZip
Google Chrome Portable
Driver NVIDIA GeForce 466.77 WHQL
ZoneAlarm Antivirus + Firewall
VLC Media Player
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:13.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Served by www2v