Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-06-2008, 17:51   #1
EnricoilP
Junior Member
 
Iscritto dal: Feb 2008
Messaggi: 22
[java] max-heap

Ciao a tutti,

Sono due ore che sbatto la testa contro questo pezzo di codice. Data una lista di interi, devo restituire una max-heap.

Codice:
import java.util.Arrays;

public class MaxHeap {

	private int[] m_Heap;
	private int m_Size;

	// costruttori
	public MaxHeap(int[] in) 
	{
		m_Size = in.length;
		m_Heap = in;
		buildHeap();
	}

	public void buildHeap() {
		for (int i = (int) ((m_Heap.length / 2) ); i >= 0; i--) {
			heapify(i);
		}
	}

	private void heapify(int i) {
		int l = left(i);
		int r = right(i);
		int largest = 0;
		if ((l < m_Size)&& (m_Heap[l] > m_Heap[i])){
			largest = l;
		} 
		else {
			largest = i;
		}
		if ((r < m_Size) && (m_Heap[r] > m_Heap[largest])){
			largest = r;
		}
		if (largest != i){
			int swap = m_Heap[i];
			m_Heap[i] = m_Heap[largest];
			m_Heap[largest] = swap;
			heapify(largest);
		}
	}

	private int left(int i) {
		return 2 * i;
	}

	private int right(int i) {
		return 2 * i + 1;
	}

	public String toString() {
		return Arrays.toString(m_Heap);
	}


	public static void main(String[] args) {
		MaxHeap myHeap = new MaxHeap(myArray);
		System.out.println(myHeap.toString());
	}

	static int[] myArray = {43,9,68,50,57,51,36,27,89,73,87,57,15,18,55};
Mi restituisce: [89, 87, 73, 55, 68, 57, 36, 50, 57, 43, 51, 9, 15, 18, 27]
... dove 55 ha come figli 50 e 57.

Non riesco proprio a vedere l'errore...

Vi ringrazio!
EnricoilP è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2008, 10:11   #2
wizard_at
Senior Member
 
L'Avatar di wizard_at
 
Iscritto dal: Jul 2006
Città: MILANO
Messaggi: 1645
mi scusa per la mia niubba niubbaggine...cosa e'un "max-heap"??
__________________
xoooxoooxooox
wizard_at è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2008, 10:54   #3
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
sicuro che per ottenere l'altro figlio fosse 2 * i + 1 e non 2 * (i + 1) ?
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2008, 10:54   #4
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
oggesù, ora che ci faccio caso... hai usato la notazione ungherese in Java...
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2008, 14:38   #5
EnricoilP
Junior Member
 
Iscritto dal: Feb 2008
Messaggi: 22
Quote:
Originariamente inviato da wizard_at Guarda i messaggi
mi scusa per la mia niubba niubbaggine...cosa e'un "max-heap"??
In parole povere è una struttura dati astratta rappresentata da un array (che puo' essere visto come un albero binario) in cui ogni elemento i è maggiore o uguale dell'elemento i*2 e dell'elemento i*2 + 1. "i" è il padre, "i*2" e "i*2 + 1" sono i due figli.
EnricoilP è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2008, 14:39   #6
EnricoilP
Junior Member
 
Iscritto dal: Feb 2008
Messaggi: 22
Quote:
Originariamente inviato da 71104 Guarda i messaggi
sicuro che per ottenere l'altro figlio fosse 2 * i + 1 e non 2 * (i + 1) ?
Sì, è 2*i + 1

Quote:
Originariamente inviato da 71104 Guarda i messaggi
oggesù, ora che ci faccio caso... hai usato la notazione ungherese in Java...
Ed è una cosa scabrosa?
EnricoilP è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2008, 09:05   #7
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da EnricoilP Guarda i messaggi
Ed è una cosa scabrosa?
Diciamo che è come mettere la testa di uno yak sul corpo di una pecora*...

Sarebbe meglio usare lo stile camelCase e le naming convention tipiche di Java



* modo di dire tibetano
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2008, 09:41   #8
khelidan1980
Senior Member
 
L'Avatar di khelidan1980
 
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Diciamo che è come mettere la testa di uno yak sul corpo di una pecora*...

Sarebbe meglio usare lo stile camelCase e le naming convention tipiche di Java



* modo di dire tibetano
mi son sempre chiesto perchè camelCase....la gobba del cammello lol....

inoltre credo la notazione unghererese si allontani anche dal paradigma oo,cosa starebbe a rappresentare un oggetto di nome "myArray" ad esempio?
__________________
Khelidan

Ultima modifica di khelidan1980 : 23-06-2008 alle 09:44.
khelidan1980 è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2008, 09:52   #9
EnricoilP
Junior Member
 
Iscritto dal: Feb 2008
Messaggi: 22
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Sarebbe meglio usare lo stile camelCase e le naming convention tipiche di Java
Ah.

Quote:
Originariamente inviato da khelidan1980 Guarda i messaggi
inoltre credo la notazione unghererese si allontani anche dal paradigma oo,cosa starebbe a rappresentare un oggetto di nome "myArray" ad esempio?
myArray non è camel case? Comunque mi pare chiaro che rappresenti un array di esempio su cui testare la classe...da qui "myArray". Cosa avrei dovuto scriverci?
Comunque, non sarà di certo quello ad aver indispettito il compilatore.
EnricoilP è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2008, 12:15   #10
khelidan1980
Senior Member
 
L'Avatar di khelidan1980
 
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
Quote:
Originariamente inviato da EnricoilP Guarda i messaggi
Ah.



myArray non è camel case? Comunque mi pare chiaro che rappresenti un array di esempio su cui testare la classe...da qui "myArray". Cosa avrei dovuto scriverci?
Comunque, non sarà di certo quello ad aver indispettito il compilatore.
no forse mi son spiegato male,e si camelCase ma intendevo che non è molto OO,quell'oggetto cosa rappresenta del mondo reale?
Poi è più un discorso generale non focalizzato sue queste poche righe di esempio,dicevo che la notazione ungherese poco ci azzecca con il paradigma OO
__________________
Khelidan
khelidan1980 è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2008, 17:50   #11
EnricoilP
Junior Member
 
Iscritto dal: Feb 2008
Messaggi: 22
Quote:
Originariamente inviato da khelidan1980 Guarda i messaggi
no forse mi son spiegato male,e si camelCase ma intendevo che non è molto OO,quell'oggetto cosa rappresenta del mondo reale?
Rappresenta la configurazione di non so quanti flip-flop, se è nella memoria centrale, ma non vedo cosa c'entri. Puoi essere un po' più chiaro? Grazie.
EnricoilP è offline   Rispondi citando il messaggio o parte di esso
Old 24-06-2008, 07:55   #12
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Forse khelidan1980 voleva semplicemente dire che nominare un array di interi col nome "myArray" non dice molto al lettore del codice, dato che lo vede da se che è un array di interi e forse si poteva trovargli un nome più significativo.

Comunque credo anche parlasse in senso più generale, va da se che nel caso uno scriva una piccola porzione di codice per delle prove e uso personale non è necessario che si soffermi ogni volta a spendere 5 min per trovare il nome più sgnificativo possibile per ogni cosa.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
Cloudflare: risolto il bug di memoria ch...
Lunex spegne gli antivirus con un driver...
Pannelli solari efficienti oltre il limi...
Qualcomm conferma la collaborazione con ...
OnePlus 16 arriverà il prossimo m...
Dallo scroll condiviso ai quiz con Gemin...
Gli agenti AI stanno superando i limiti:...
Con SAS Viya, gli agenti IA passano dall...
OpenAI prepara 'o', un assistente sempre...
Fra coupon e sconti al check-out, ecco t...
Ninja Foodi MAX 14 in 1 a 329,99€: la mu...
Dario Amodei invitato a cena privata da ...
Poste Italiane sale all'85,82% di TIM: o...
FRITZ!Box 6820 LTE a 59,98€: il router 4...
Minecraft introduce una nuova dimensione...
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: 12:31.


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