Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Nelle ultime settimane abbiamo provato la Corsair Vanguard Air 99 Wireless, una tastiera tecnicamente da gaming, ma che in realtà offre un ampio ventaglio di possibilità anche al di fuori delle sessioni di gioco. Flessibilità e funzionalità sono le parole d'ordine di una periferica che si rivolge a chi cerca un prodotto capace di adattarsi a ogni esigenza e ogni piattaforma
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
DEEBOT T90 PRO OMNI abbina un sistema di aspirazione basato su tecnologia BLAST ad un rullo di lavaggio dei pavimenti dalla larghezza elevata, capace di trattare al meglio le superfici di casa minimizzando i tempi di lavoro. Un robot completo che riesce anche ad essere sottile e garantire automazione ed efficienza nelle operazioni di pulizia di casa
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Per diversi giorni il Galaxy S26 Ultra di Samsung è stato il nostro compagno di vita. Oltre alle conferme del colosso coreano come la qualità del display e una suite AI senza rivali, arriva il Privacy Display, un unicum nel mondo smartphone. Ci sono ancora alcuni gap che non sono riusciti a colmare lato batteria e fotocamera, seppur con alcuni miglioramenti.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-05-2005, 21: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, 07: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, 09: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, 10: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, 10: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, 14: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, 14: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, 16: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, 17: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, 17: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, 19: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, 10: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, 12: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


Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale Corsair Vanguard Air 99 Wireless: non si era mai...
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lav...
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
NVIDIA RTX PRO 4500 Server Edition: la s...
Core Ultra 200 HX Plus: Intel mette il t...
Starfield arriva su PS5: data ufficiale,...
iPad Air 13" (M4) scende di prezzo: -100...
Oracle annuncia Java 26 con il Java Veri...
OPPO Find N6 è ufficiale: sottile...
Influencer sotto controllo Agcom: arriva...
Scontro in OpenAI sul ChatGPT per adulti...
Apple Watch Series 11 a 349€ e altri int...
Starlink rinnova i piani residenziali in...
POCO X8 Pro e Pro Max ufficiali: potenza...
Jensen Huang propone i token come nuovo ...
Realme 16 Pro e 16 Pro+ tra i più...
Dall'enciclopedia all'algoritmo: Encyclo...
Il CEO di Epic Games Tim Sweeney ha comp...
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: 20:12.


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