Torna indietro   Hardware Upgrade Forum > Software > Programmazione

realme GT: prestazioni ed esperienza da top di gamma a 399 euro! La recensione
realme GT: prestazioni ed esperienza da top di gamma a 399 euro! La recensione
realme ha presentato il suo attesissimo top di gamma anche in Europa. Si chiama realme GT, offre specifiche da top di gamma completo ma viene venduto al lancio a soli 399 euro. Ecco la recensione completa con le sue specifiche tecniche.
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
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


realme GT: prestazioni ed esperienza da top di gamma a 399 euro! La recensione realme GT: prestazioni ed esperienza da top di g...
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...
Metroid Dread è il nuovo capitolo...
The Medium arriva anche su PS5: l'annunc...
E3 2021: tutti gli annunci e i trailer d...
Tim Berners-Lee mette all'asta il codice...
Kingston Workflow Station: soluzione pra...
IPU, Infrastructure Processing Unit, la ...
Tesla tornerà ad accettare Bitcoi...
ELEX 2 annunciato ufficialmente all'E3 2...
Sembra un quadro, ma è uno speake...
G.Skill Z5i, un case mini ITX pronto anc...
iOS 15, alcune feature non funzioneranno...
Roger Waters manda a... quel paese Faceb...
Noctua NH-P1, il mega-dissipatore passiv...
A Plague Tale Requiem su PC, Xbox Series...
Galaxy S22, trapelati i dettagli sui dis...
Chromium
WinRAR
BitDefender Internet Security
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
LibreOffice 7.1.4
Advanced SystemCare Ultimate
PeaZip
Google Chrome Portable
Driver NVIDIA GeForce 466.77 WHQL
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: 23:29.


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