Ajuda: Inserção num índice específico dum heap

Ang3ls

Power Member
Tenho de fazer o método estático:

public static int heapChangeValue(int []v, int len, int ix, int newValue)

que, dado o amontoado binário representado pelo array v com dimensão len, altera o valor da posição de índice ix para o valor newValue. Este método deve reorganizar o array de forma a que este continue a representar um amontoado binário.


Faltei à aula em que demos isto, e estive a tentar-me pôr a par da matéria pelo livro...
A minha questão é que, pelo que eu entendo do enunciado o objectivo é inserir um elemento no índice ix, e reorganizar o array mas tendo em conta que o newValue vai permanecer no indíce ix do array. Garantindo assim que o único elemento que não vai mudar de posição vai ser o elemento newValue que se encontra no índice ix. Os restantes terão ou não de mudar para que permaneça um amontoado binário.

Mas já me disseram que só interessa colocar o elemento naquele índice inicialmente e depois reorganizar o array de forma a continuar um amontoado binário, não interessando assim a posição final onde irá ficar o newValue. Estando só a substituir um valor pelo outro, e de seguida reorganizando... se for desta forma o algoritmo em si parece-me acessível, especialmente por ter disponíveis exemplos e exercícios tanto nos apontamentos, como na net... mas da 1ª forma parece-me mais complicado...

É possível inserir um elemento num determinado índice do array, e garantir que permanece nesse índice após reorganizar o array num heap?! Ou pode sempre acontecer, dependendo do elemento, de não se conseguir um heap? Visto que se quiser inserir num heap um elemento maior do que o 1º elemento, no índice 2, depois de reordenar se mantiver o elemento no índice 2, não dará para reorganizar de forma a ter um heap...

E não estou a ver que inteiro é que o método irá retornar... :confused:

Podem dar-me a vossa interpretação em relação ao objectivo do método e em relação à melhor forma de realizar o exercício?
 
Back
Topo