Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-06-2006, 17:57   #1
riemann_01
Member
 
Iscritto dal: May 2006
Messaggi: 38
[C++] quicksort

Ciao a tutti!
Per quale motivo il seguente algoritmo di ordinamento, da me scritto, non funziona correttamente? Non riesco a trovare l'errore. Chi puo' darmi una mano? Grazie in anticipo!!

Codice:
// quicksort.cc

#include <iostream>
using namespace std;

template <class T>
inline void my_swap(T& x, T& y)
{
	T temp = x;
	x = y;
	y = temp;
}

template <class T>
void fill(T* seq, int size)
{
	for(; size > 0; --size, ++seq) 
		cin >> *seq;
}

template <class T>
void print(T *seq, int size)
{
	for(; size > 0; --size, ++seq)
		cout << *seq << endl;
}

// trova l'elemento di confronto
template <class T>
T find_pivot(T* lm, T* rm)
{
	T val = *(lm + (rm - lm) / 2);
	return val;
}

// effettua la partizione
template <class T>
T* partition(T* lm, T* rm, T pivot)
{
	while(lm < rm) {
		while(*lm < pivot)
			++lm;
		while(*rm > pivot)
			--rm;
		if(lm < rm) {
			my_swap(*lm,*rm);
			++lm;
			--rm;
		}
	}
	return lm;
}

// algoritmo di ordinamento
template <class T>
void quicksort(T* seq, T* lm, T* rm)
{
	T pvt = find_pivot(lm,rm), *p;
	if(lm < rm) {
		p = partition(lm,rm,pvt);
		quicksort(seq,lm,p-1);
		quicksort(seq,p+1,rm);
	}
}

// prova
int main()
{
	int a[10];
	
	cout << "Insert 10 integers (to confirm press ENTER)\n";
	fill(a,10);
	cout << "Sorted sequence\n";
	quicksort(a,&a[0],&a[10-1]);
	print(a,10);
}
Codice:
Insert 10 integers (to confirm press ENTER)
100
10
200
-100
-200
-101
100
-23
0
23
Sorted sequence
-200
10
-101
-100
-23
0
23
100
100
200

----------------------------------------------
Program exited successfully with errcode (0)
Press the Enter key to close this terminal ...
riemann_01 è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2006, 09:34   #2
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Codice:
// quicksort.cc

void quicksort(T* seq, T* lm, T* rm)
{
	T pvt = find_pivot(lm,rm), *p;
	if(lm < rm) {
		p = partition(lm,rm,pvt);
		quicksort(seq,lm,p-1);
		quicksort(seq,p+1,rm);
	}
}
cosi' ad occhio p-1 e p+1 potrebbero sforare.

in un array da lm a rm
p-1
potrebbe essere < lm
p+1 > rm ...

io aggiungerei un controllo tipo (solo per debuggure)

Codice:
      if ( (p-1) < lm )
         cout << "MINORE" << endl;
      if ( (p+1) > rm )
         cout << "MAGGIORE" << endl;
spero ti serva a qualcosa
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2006, 00:12   #3
Qu@ker
Member
 
Iscritto dal: Apr 2004
Messaggi: 130
Il pivot li' in mezzo all'array da' qualche problema quando tenti di riordinare.
Spesso in questi casi lo si sposta alla fine dell'array, si ordina il resto e poi
si mette il pivot nella posizione 'giusta'.
Faccio un esempio sulla falsariga del tuo:
Codice:
#include <iostream>
#include <algorithm>
using namespace std;

template <class T>
void fill(T* seq, int size)
{
	for(; size > 0; --size, ++seq) 
		cin >> *seq;
}

template <class T>
void print(T *seq, int size)
{
	for(; size > 0; --size)
		cout << *seq++ << " ";
	cout << endl;
}

template <class T>
inline
T* find_pivot(T* lm, T* rm)
{
	return (lm + (rm - lm) / 2);
}

template <class T>
T* partition(T* inizio, T* fine, T *pivot)
{
        T *lm = inizio, *rm = fine-1;
        swap(*pivot, *fine);
        for (;;) {
	        while(*lm < *fine)
			++lm;
		while(*rm > *fine) 
			if (--rm == inizio)
				break;
		if (lm >= rm)
			break;
                swap(*lm, *rm);
                ++lm;
                --rm;
        }
        std::swap(*lm, *fine);

        return lm;
}

template <class T>
void quicksort(T* seq, T* lm, T* rm)
{
	if (rm <= lm)
		return;
	T *p = partition(lm,rm,find_pivot(lm,rm));
	quicksort(seq,lm,p-1);
	quicksort(seq,p+1,rm);
}

int main()
{
	int a[10];
	
	cout << "Insert 10 integers (to confirm press ENTER)\n";
	fill(a,10);
	cout << "Sorted sequence\n";
	quicksort(a,&a[0],&a[9]);
	print(a,10);
}
Codice:
bash-3.00$ ./qsort
Insert 10 integers (to confirm press ENTER)
100 10 200 -100 -200 -101 100 -23 0 23
Sorted sequence
-200 -101 -100 -23 0 10 23 100 100 200
bash-3.00$
Qu@ker è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2006, 19:00   #4
riemann_01
Member
 
Iscritto dal: May 2006
Messaggi: 38
Grazie ai vostri consigli sono riuscito a rilevare l'errore.
Riporto la versione corretta.

Codice:
// quicksort.h

#include <iostream>
using namespace std;

template <class T>
void fill(T *seq, int dim)
{
	for(; dim > 0; --dim, ++seq)
		cin >> *seq;
}

template <class T>
void print(T *seq, int dim)
{
	for(; dim > 0; --dim, ++seq)
		cout << *seq << endl;
}

template <class T>
inline void swap(T *x, T *y)
{
	T temp = *x;
	*x = *y;
	*y = temp;
}

template <class T>
void quicksort(T *seq, T *lm, T *rm)
{
	if(rm > lm) {
		T *i = lm - 1, *j = rm - 1, *pivot = rm;
		
		for(;;) {
			while(*(++i) < *pivot);
			while((*j > *pivot) && (--j >= lm));
			if(i < j)
				::swap(i,j);
			else
				break;
		}
		::swap(i,rm);
		quicksort(seq,lm,i-1);
		quicksort(seq,i+1,rm);
	}
}
Codice:
// quicksort.cc

#include "quicksort.h"

const int SIZE = 10;

int main()
{
	int d[SIZE];
	
	cout << "Insert " << SIZE << " integers (to confirm press ENTER)\n";
	fill(d,SIZE),
	cout << "Sorting...\n";
	quicksort(d,&d[0],&d[SIZE-1]);
	print(d,SIZE);
}
riemann_01 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
SpaceX: un satellite ha fotografato il s...
36 idee regalo con offerte Amazon sotto ...
Sony assume il controllo dei Peanuts: Sn...
DJI Neo scende a 149€ su Amazon, in vers...
Scoperto un nuovo esopianeta che orbita ...
Blue Origin NS-37: successo per la missi...
Potrebbe essere stata rilevata una super...
La cometa interstellare 3I/ATLAS è...
Xiaomi 17 Ultra: l'autonomia non sarà un...
Il processo produttivo a 2 nm di TSMC è ...
L'atteso aggiornamento dei driver della ...
The Elder Scrolls VI nel 2029 e Fallout ...
Il Ryzen 7 9850X3D appare nel catalogo d...
Weekend pre natalizio Amazon, ecco tutte...
Prezzi giù su Oral-B iO: spazzolini elet...
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: 22:03.


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