Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x scommette tutto, forse troppo, sulla batteria da 7500 mAh e sulla certificazione ArmorShell per farsi notare nella fascia più economica del mercato: lo abbiamo messo alla prova per capire a chi è rivolto questo smartphone che sacrifica un po' prestazioni, display e fotocamera per offrire l'autonomia migliore possibile a un prezzo decisamente contenuto
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


iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
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...
ECOVACS T90S PRO OMNI Care Kit a 699€: 4...
iPhone Duo, i problemi di produzione con...
Lenovo e FIFA, il bilancio dei Mondiali ...
La Terra vista dalla Stazione Spaziale: ...
L'IA cinese ti spiega come produrre armi...
Nuova Fire TV Stick 4K e Telecomando Fir...
Addio Visa e Mastercard? L'Europa prepar...
Allarme IA in Florida: lo stato invoca i...
Tutte le Offerte Prime anticipate: robot...
Procura di Sassari e Oxygen Forensics: i...
Duo-Man trasforma iPhone Duo in un Walkm...
Questa carta da parati produce elettrici...
Perseverance scopre su Marte rocce mai o...
Batterie allo stato solido, Gotion alza ...
Caviar presenta la Black Edition di iPho...
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: 01:26.


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