Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
Un proiettore economico, che fa della portabilità e immediatezza i suoi punti di forza. Adatto per una camera da letto o per la casa vacanze, è basato su sistema proprietario Linux ma offre piena compatibilità ufficiale a Netflix
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
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


HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix HONOR CHOICE Projector Air Pro: piccolo, portati...
ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
BMW taglierà 8.000 posti di lavor...
7.600 annunci di nudify app su Meta, tut...
Visa ne lascia a casa 2600: intelligenza...
Batterie sostituibili? Per Logitech, gli...
IBM: l'IA riduce i costi delle violazion...
Logitech G Cloud bocciata dal pubblico, ...
NVIDIA RTX Spark, provato un prototipo c...
Sony e Fujifilm: evacuate le fabbriche d...
Starship: Ship 40 continua a galleggiare...
UMC investe su Singapore e Tainan per ri...
Steam Machine, novità sulle code:...
Anche Foxconn abbandona VMware e sceglie...
Windows 11 migliora l'accessibilit&agrav...
WhatsApp introduce il nuovo widget per i...
Blink Mini da 12,99€ e Pan-Tilt a 19,99€...
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: 18:49.


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