Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Star Wars Zero Company è l'erede di XCOM 2
Star Wars Zero Company è l'erede di XCOM 2
Bit Reactor porta nell’universo di Star Wars una struttura tattica che richiama apertamente XCOM 2, ma la arricchisce con legami tra i personaggi, progressione ruolistica, gestione della base e un sistema di combattimento costruito attorno a tre Punti Azione e alle risorse condivise della squadra
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
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


Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
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...
ESA e ClearSpace svilupperanno un satell...
Oracle, stock option da quasi un miliard...
Starship: si è conclusa anticipat...
Un computer quantistico ha funzionato ne...
Sovranità sui dati: AWS è ...
Il nuovo nome della distro Linux mobile ...
Due ventole da 220 mm e non solo: Cooler...
Truffa telefonica via Google Ads: il bro...
Google pensiona le Gems di Gemini: cosa ...
Flight 14: incertezza per un problema a ...
C'è un problema con i robot Tesla: i dip...
Raggi gamma anomali dalla Via Lattea sve...
NIO vende il 30% della divisione scambio...
Sony brevetta un DualSense capace di acc...
Un volto per l'assistenza IA: cosa pu&og...
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:02.


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