Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-03-2007, 02: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, 08: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, 11: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, 12: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, 12: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 12:59.
casacup è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2007, 13: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, 13: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


Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
Cubi Z AI 8M visto da vicino, un mini-PC...
Datacenter nello Spazio, affascinante ma...
Social e minori, Butti apre al dibattito...
Tutte le offerte Amazon del weekend, sol...
Amazon spinge sull'usato garantito: 10% ...
TikTok rischia una maxi-multa in Europa:...
Bose su Amazon: QuietComfort SC over ear...
Scope elettriche super accessoriate in o...
Umidità e muffa addio: questo deu...
DREAME Aqua10 Ultra Roller a 999€ &egrav...
500.000 kit gratis consegnati: Noctua fa...
Il MIT sperimenta il calcolo termico: op...
Sembra ormai certo: la prossima Xbox sar...
"Solutions Beyond Displays": l...
La società europea The Exploratio...
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: 13:28.


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