Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Dreame Aqua10 Ultra Roller, la pulizia di casa con un rullo
Dreame Aqua10 Ultra Roller, la pulizia di casa con un rullo
Il più recente robot per la pulizia domestica di Dreame, modello Aqua10 Ultra Roller, abbina un potente motore di aspirazione della polvere a un sofisticato sistema di lavaggio con rullo integrato. Il tutto governato dalla logica di intelligenza artificiale, per i migliori risultati
Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti
Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti
Siamo volati fino a Belfast, capitale dell'Irlanda Del Nord, per scoprire il nuovo Realme 15 Pro 5G Game Of Thrones Limited Edition. Una partnership coi fiocchi, quella tra Realme e HBO, un esercizio di stile davvero ben riuscito. Ma vi raccontiamo tutto nel nostro articolo
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
Il Gigabyte Gaming A16 offre un buon equilibrio tra prestazioni e prezzo: con Core i7-13620H e RTX 5060 Laptop garantisce gaming fluido in Full HD/1440p e supporto DLSS 4. Display 165 Hz reattivo, buona autonomia e raffreddamento efficace; peccano però le USB e la qualità cromatica del pannello. Prezzo: circa 1200€.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-03-2007, 01:05   #1
casacup
Senior Member
 
Iscritto dal: Feb 2006
Città: AQ
Messaggi: 2787
preparando fond inf 2... problema merge sort...

salve a tutti!
mi sto dando alla pazza gioia con quelle 6-7-8 ore al giorno di informatica 2 causa esami... e sono arrivato al fatidico merge sort. Il linguaggio è il c++, l'algoritmo è il merge sort creato per evitare troppa occupazione in memoria centrale (comunque buono per dim input < 10^6).

Codice:
#include<stdlib.h>
#include<iostream>
#include<string.h>
#include<conio.h>
using namespace std;


const int n_max=1000;
typedef int tipo_elementi;
struct  tipo_insieme{
                     tipo_elementi elementi[n_max];
                     int lunghezza;
                     };
tipo_insieme I,I1,I2;

void creainsieme(tipo_insieme &Insieme)
{
     cout<<"inserisci il numero di elementi dell'insieme ";
     cin>>Insieme.lunghezza;
     for(int i=0;i<Insieme.lunghezza;i++)
     { 
              cout<<"inserisci l'elemento  "<<i<<"  ";
              cin>>Insieme.elementi[i];
     }
}                       



void merge(tipo_insieme insieme1,tipo_insieme insieme2,tipo_insieme &insieme)
{ 
     int k=0,j=0,i=0;
                            while((i<insieme1.lunghezza)&&(j<insieme2.lunghezza))
                            {
                            if(insieme1.elementi[i]<insieme2.elementi[j])
                            {insieme.elementi[k]=insieme1.elementi[i];
                            i++;}
                            else
                            {
                            insieme.elementi[k]=insieme2.elementi[j];
                            j++;
                            }
                            k++;
                            }        
                            
                            
                            while(i<insieme1.lunghezza) 
                                {     insieme.elementi[k]=insieme1.elementi[i];
                                i++;k++;}
                                    
                            while(j<insieme2.lunghezza) 
                                {     insieme.elementi[k]=insieme2.elementi[j];
                                j++;k++;}
                           insieme.lunghezza=k;   
                                 
}



void mergesort(tipo_insieme &seq)
{
     tipo_insieme seq1,seq2;
     
     if (seq.lunghezza!=1)     {
                               seq1.lunghezza=(seq.lunghezza/2);
                               if(seq.lunghezza==(seq1.lunghezza*2))
                               seq2.lunghezza=(seq.lunghezza/2);
                               else
                               seq2.lunghezza=(seq.lunghezza/2)+1;                               
                               for(int i=0;i<seq1.lunghezza;i++)
                               seq1.elementi[i]=seq.elementi[i];
                               
                               //cout<<seq1.lunghezza<<"    j    "<<seq2.lunghezza<<"     ";       stampa di controllo
                               for(int i=0;i<seq2.lunghezza;i++)
                               seq2.elementi[i]=seq.elementi[i+seq1.lunghezza];
                               
     mergesort(seq1);
     mergesort(seq2);
     merge(seq1,seq2,seq);
     }
   
}      





void stampainsieme(tipo_insieme Insieme1)
{
     for (int i=0;i<Insieme1.lunghezza;i++)
       cout<<"   "<<Insieme1.elementi[i];
       cout<<endl;
}




int main()
{
creainsieme(I1);
mergesort(I1);
stampainsieme(I1);
system("pause");
return 0;
}

ora, da quello che ho capito io in pratica il sistema merge-sort prende un array di dimensione n ed, in maniera ricorsiva, lo divide in due (quindi i due array vengono divisi in due, che vengono ridivisi in due e così via) fino ad avere n variabili allocate corrispondenti agli n elementi dell'array.
dopo di ciò prende e comincia a fondere: risalendo "sull'albero" appena creato prende prima due elementi adiacenti, li ordine e li fonde, e così poi fa con tutti gli altri, e la stessa cosa fa con tutti gli array appena creati, e così via fino ad avere due unici array di dimensione n/2, già ordinati al loro interno, che vengono fusi ed ordinati...

il ragionamento - spero - sia questo.

c'è solo un problema: NON SO COSA SUCCEDE A LIVELLO DI CODICE.....

nel senso, non è che non riesco ad interpretare quanto scritto sopra, ma non ne riesco ad avere la visione d'insieme... e avrei bisogno che quale pia pia ma tanto pia persona mi dica, su un esempio, chessò, di un array di dimensione 5 o 6 cosa succeda passo passo ad ogni attivazione (naturalmente parlo del merge sort... la funzione leggi e stampa le so interpretare...).

mi sapreste aiutare? please...

grazie al santo/santi che mi daranno una mano
__________________
Acer 3820TG
Codice:
Ho venduto a: 23answer23, clamasa, salsero71, nik4, lollo_79, Star, krystis, tari80, BananaFlanders, froZZen, Perfavore83, Holy_knight; Ho comprato da: kikki2, ThE cX MaN, PantWeb, robby85, aldarev, markese, Drago, NLDoMy, Hells, Dragonx21, axlaxl, Homer314, e tanti tanti altri :)
casacup è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2007, 07:09   #2
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
Qui trovi spiegazioni e esempio

http://it.wikipedia.org/wiki/Merge_sort
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2007, 10:18   #3
casacup
Senior Member
 
Iscritto dal: Feb 2006
Città: AQ
Messaggi: 2787
già visto... purtroppo l'articolo su wikipedia non risponde alla mia domanda, ovvero non spiega per bene cosa accade ad ogni attivazione...
__________________
Acer 3820TG
Codice:
Ho venduto a: 23answer23, clamasa, salsero71, nik4, lollo_79, Star, krystis, tari80, BananaFlanders, froZZen, Perfavore83, Holy_knight; Ho comprato da: kikki2, ThE cX MaN, PantWeb, robby85, aldarev, markese, Drago, NLDoMy, Hells, Dragonx21, axlaxl, Homer314, e tanti tanti altri :)
casacup è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2007, 11:36   #4
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Ma un compilatore per eseguire il debug passo passo no?
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2007, 11:48   #5
casacup
Senior Member
 
Iscritto dal: Feb 2006
Città: AQ
Messaggi: 2787
no...devo proprio capirlo per bene a livello teorico, per essere in grado poi di utilizzarlo per bene...
__________________
Acer 3820TG
Codice:
Ho venduto a: 23answer23, clamasa, salsero71, nik4, lollo_79, Star, krystis, tari80, BananaFlanders, froZZen, Perfavore83, Holy_knight; Ho comprato da: kikki2, ThE cX MaN, PantWeb, robby85, aldarev, markese, Drago, NLDoMy, Hells, Dragonx21, axlaxl, Homer314, e tanti tanti altri :)

Ultima modifica di casacup : 08-03-2007 alle 11:59.
casacup è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2007, 12:19   #6
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da casacup Guarda i messaggi
no...devo proprio capirlo per bene a livello teorico, per essere in grado poi di utilizzarlo per bene...
Per capirlo a livello teorico ti basta studiare il merge sort su un qualunque manuale, se vuoi capire il funzionamento passo passo del codice (come chiedevi) ti serve un compilatore, una spiegazione a parole non farebbe altro che ricalcare il funzionamento dell'algoritmo scritto su qualunque manuale.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2007, 12:33   #7
casacup
Senior Member
 
Iscritto dal: Feb 2006
Città: AQ
Messaggi: 2787
purtroppo sto studiando sul libro scritto dal prof... nel quale il merge è spiegato abbastanza bene, il merge sort invece non ha neanche una riga di spiegazione (riferendomi a quello riportato basato sugli indici)... ecco, in particolare è sugli indici che mi impiccio...
__________________
Acer 3820TG
Codice:
Ho venduto a: 23answer23, clamasa, salsero71, nik4, lollo_79, Star, krystis, tari80, BananaFlanders, froZZen, Perfavore83, Holy_knight; Ho comprato da: kikki2, ThE cX MaN, PantWeb, robby85, aldarev, markese, Drago, NLDoMy, Hells, Dragonx21, axlaxl, Homer314, e tanti tanti altri :)
casacup è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Dreame Aqua10 Ultra Roller, la pulizia di casa con un rullo Dreame Aqua10 Ultra Roller, la pulizia di casa c...
Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti Recensione Realme 15 Pro Game Of Thrones: un ver...
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Lapt...
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Panasonic Lumix S9: disponibile in quatt...
Nikon presenta due obiettivi: NIKKOR Z D...
Horizon vs Light of Motiram, si entra ne...
Atari rilancia Intellivision Sprint e fa...
Leapmotor lancia in Italia il SUV elettr...
QNAP punta sempre più in alto con...
Scandalo ibride plug-in: consumano come ...
L'intelligenza artificiale fa sempre pi&...
Oracle dal punto di vista dell’Europa: l...
James Dyson Award 2025: dall'accessibili...
Xiaomi: gli smartphone con display poste...
Final Fantasy 7 Remake Part 3 offrir&agr...
Chery presenta Omoda 4, da benzina a ele...
TSMC alza i prezzi: Qualcomm e MediaTek ...
Una Offline Room per aiutare gli student...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
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: 02:10.


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