Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
L'euro digitale è una valuta fiat che entrerà in vigore nei prossimi anni. L'obiettivo principale è quello di ridurre la dipendenza dalle piattaforme di pagamento digitali statunitensi e offrire ai cittadini un modo semplice per trasferire denaro. Anche offline, anche in maniera (pseudo)anonima
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-05-2005, 20:28   #1
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
[C]-Problema Quick sort

Salve a tutti....
Chi mi aiuta con questo pezzo di codice che non riesco a far funzionare?
Si tratta del quick sort...e si blocca in esecuzione
Codice:
void Quick(int v[],int sx,int dx)
{
     int pivot=v[(sx+dx)/2];
     int isx=sx;
     int idx=dx;
     while(sx<=dx) {
                   while(v[isx]<pivot) isx++;
                   while(v[idx]>pivot) idx--;
                   if(isx<=idx) {
                                Scambia(v[isx],v[idx]);
                                isx++;
                                idx--;
                                }
                   }
     if(sx<idx) Quick(v,sx,idx);
     if(isx<dx) Quick(v,isx,dx);
return;
}
Inoltre, come potrei modificarlo per far ordinare un vettore in modo decrescente?
Grazie in anticipo
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 06:13   #2
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
up..
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 08:59   #3
ghiotto86
Senior Member
 
L'Avatar di ghiotto86
 
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
puoi mettere anche la funzione scambia??
ghiotto86 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 09:38   #4
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da -Yara-
Codice:
while(sx<=dx)
Casomai, "while (isx<=idx)".
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 09:51   #5
ghiotto86
Senior Member
 
L'Avatar di ghiotto86
 
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
Quote:
Originariamente inviato da Ziosilvio
Casomai, "while (isx<=idx)".
ecco hai ragione.

yara mannaggia a te e chi te fa programmà
ghiotto86 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 13:53   #6
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
Quote:
Originariamente inviato da ghiotto86
ecco hai ragione.

yara mannaggia a te e chi te fa programmà
è colpa del mio Proff che fa casino
Oggi m'ha fatto fare la Torre di Hanoi...che due palle....vabbè torno a studiarmi actionscript va'..senno' cado in depressione
Grazie dell'aiuto
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 13:59   #7
ghiotto86
Senior Member
 
L'Avatar di ghiotto86
 
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
mai fidarsi dei prof.
ghiotto86 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 15:53   #8
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Adesso che ci penso...
Quote:
Originariamente inviato da -Yara-
[code]Scambia(v[isx],v[idx])
Casomai, "Scambia(v+isx,v+idx)", o "Scambia(v,isx,idx)", o al limite "Scambia(&v[isx],&v[idx])"...
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 16:12   #9
3nigma666
Senior Member
 
L'Avatar di 3nigma666
 
Iscritto dal: Jan 2005
Città: A casa mia
Messaggi: 825
Uhmm secondo me il tuo algoritmo non è tanto efficiente,non rispetta la complessita di =(nlong) me è superiore.non ti conviene fare cosi:

Codice:
//--------------------------------------------------------------------------------
// Name  :  swap(long& a, long& b)
// Desc  :  Questa funzione implementa lo scambio dei valori con 
//          la tecnica inplace, ovverosia senza alcuna variabile di supporto
//          Si noti che i parametri sono passati per riferimento, altrimenti 
//          le modifiche sarebbero effettuate su copie di essi, e lo scambio di valore non ci sarebbe.
//          ^= è il simbolo di Xor. Eseguo un Xor per scambiare i valori
// ToDo  :  Nulla  :D
// Vers  :  1.0
//----------------------------------------------------------------------------------------

void swap (long& a, long& b) {
	a ^= b ^= a ^= b; //Metodo inplace per scambiare i valori di a e b
};

////////////////////////////////////////////////////////////////////////////////
//                              QUICKSORT
////////////////////////////////////////////////////////////////////////////////

//-----------------------------------------------------------------------
// Name  :  Partition 
// Desc  :  Prende come parametri puntatore ad un vettore, indice sinistro ,indice destro
//          Inizia a scorrerre il vettore partendo da fuori il vettore
//          e inizia un loop ke continua fino a quando l'indice sx è minore dell'indice dx
//          Dentro al loop viene fatto scorrere il vettore e ogni singolo elemento del vettore
//          viene confrontato con il pivot e se maggiore viene messo a dx se inferiore viene
//          posizionato a sx tramite la funzione swap
// ToDo :   Nulla
// Vers :   1.0
// Bugs :   N.P.
//-----------------------------------------------------------------------------------------

int Partition (long* vett,int left,int right){
     pivot = vett[left];//a pivot assegno il primo elemento
     i = left - 1 ;    //inizio da fuori il vettore
     j = right + 1;   //inizio da fuori il vettore
    //fino a quando l indice inferiore non supera l indice superiore continua a cercare gli elementi 
    while (i < j){
		do{j--;} //decrementa di una posizione l'indice superiore
		while (vett[j]>pivot); //continua a decrementare fino a quando l elemento trovato nn è maggiore del pivot
		do{
            i++;
        }while (vett[i]<pivot);//continua a decrementare fino a quando l elemento trovato nn è minore del pivot
		if (i<j)
			swap(vett[i],vett[j]);//inverti i due valori
        else                  
           return j;// se i ha superato j ritorno il nuovo pivot a Qsort
     }//end while
}//end partition                                 

//-------------------------------------------------------------
// Name  :  QuickSort
// Desc  :  Assegna un valore a al pivot q.la funzione richiama se stessa
//          ricorsivamente passandosi prima l'albero di dx e poi quello di sx
// ToDO  :  Nulla :D
// Vers  :  1.0
// Bugs  :  N.P
//-----------------------------------------------------------

void QuickSort (long* vett,int left,int right){
     if (left < right){
              q = Partition (vett,left,right); //Assegnazione pivot
              QuickSort(vett,left,q);//albero di sinistra
              QuickSort(vett,q+1,right);//albero di destra
              }//end if

}//end quicksort
cosi è perfetto come complessità,anke perke a mio parere non è ottimale come soluzione prendere il pivot come centro del vettore (non ke cambi molto in termini di prestazioni) però..
3nigma666 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 16:46   #10
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da 3nigma666
Uhmm secondo me il tuo algoritmo non è tanto efficiente,non rispetta la complessita di =(nlong) me è superiore
La complessita' asintotica dell'implementazione del Quicksort proposta da -Yara- e' O(n log n) nel caso medio e O(n^2) nel caso peggiore.
La complessita' asintotica dell'implementazione del Quicksort proposta da te e' O(n log n) nel caso medio e O(n^2) nel caso peggiore.

Quote:
Codice:
swap(long& a, long& b)
Questo e' codice C++. Qui invece si chiede aiuto su un programma C.

Quote:
Codice:
a ^= b ^= a ^= b; //Metodo inplace per scambiare i valori di a e b
Questo trucco funziona solo con variabili di tipo intero.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 18:19   #11
3nigma666
Senior Member
 
L'Avatar di 3nigma666
 
Iscritto dal: Jan 2005
Città: A casa mia
Messaggi: 825
per quanto riguarda la complessita del codice hai ragione, è O(nlong) in entrambi i casi ,il suo codice è correttamente scritto.
Per quanto riguarda lo swap mi tocca mentire,ho personalmente presentato un progetto con quella funzione swap cosi come l'ho definita nel mio post applicata a numeri sia float,sia double, senza avere problemi.
3nigma666 è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2005, 09:15   #12
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da 3nigma666
ho personalmente presentato un progetto con quella funzione swap cosi come l'ho definita nel mio post applicata a numeri sia float,sia double, senza avere problemi.
Se non ci sono stati problemi, allora il tuo compilatore te l'ha permesso: buono a sapersi, perché comunque è una cosa comoda.
L'Appendice A del K&R dice però esplicitamente che gli operatori bit-a-bit sono definiti solo su variabili di tipo intero, quindi quella che hai usato non è una caratteristica del linguaggio. Sarebbe interessante vedere se le cose sono cambiate in C99, di cui però so poco o nulla...
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2005, 11:12   #13
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da 3nigma666
void swap (long& a, long& b) {
a ^= b ^= a ^= b; //Metodo inplace per scambiare i valori di a e b
};
Alla fine apposggiarsi su un registro è molto piu veloce (circa 3x). Questo era un truchetto che era utile quando si aveva poca memoria.

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea Oltre il contante e le crypto: tutto sull'Euro D...
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
WhatsApp testa un cloud tutto suo per i ...
Un tassello dell'origine della vita scop...
Galaxy S26 Ultra, macchie rosse sul disp...
HUAWEI FreeClip 2S: miglior qualit&agrav...
Bun, IA ovunque e riscrittura in Rust: i...
Una startup cinese va oltre i nanometri,...
CORSAIR Platform:4 e Platform:4 Elevate,...
UnipolMove diventa più caro: scat...
Il CEO di Palantir: l'intelligenza artif...
CXMT come un treno: quasi raggiunta la c...
Il CEO di Microsoft invita le imprese al...
Agent 64: Spies Never Die arriverà...
Windows 11, addio pubblicità e risultati...
Due volte più resistente dell'acc...
Il litio non si comporta come pensavamo:...
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:41.


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