1) Implemente uma fila de prioridade com todas as seguintes funcionalidades:
1.1 - Criar fila, a partir de um conjunto de items
1.2 - Inserir novo item
1.3 - Remover o item com prioridade mais elevada
1.4 - Remover um item
1.5 - Modificar a prioridade de um item
1.6 - Juntar duas filas de prioridades (10 Pontos)
2) Implemente o Algoritmo de Heapsort (10 Pontos)
ja existe uma classe que faz isso em Java... o nome dela é PriorityQueue => http://java.sun.com/javase/6/docs/api/java/util/PriorityQueue.html
desde que o comparator que vc use, para criar a classe, use propriedades que possam ser alteradas, em um objeto, e assim possa modifcar sua posição de prioridade de saida, para atender ao item 1.5 da lista...
1.1 => PriorityQueue(Collection<? extends E> c) suporta isso
1.2 => add(E e) suporta isso
1.3 => poll() faz isso
1.4 => remove(Object o) remove um item especifico, não a partir de um index, mas seu professor não foi especifico quanto a isso.
1.5 => se ao criar o PrioertyQueue, vc definir um comparator, com propriedades de seus itens que possam ser alteradas, a ordem de prioridade de um item pode ser alterada
1.6 => addAll(Collection<? extends E> c) suporta isso, e pode receber portanto outra fila no parametro, juntando assim as duas files...
enfim essa classe que seu professor quer ja existe na API do java, não sei c ele ker q vc a implemente do ZERO, mas mesmoa ssim, o código fonte dessa classe é livre
boa sorte
........
Edit.: se mesmo assim, houver a exigencia de remover um item de indice especifico da lista, é simples...
/**
* Remove o item de indice "index" da lsita de prioridade
* @return se removeu ou não o item da lista
*/
public boolean remove(PriorityQueue pq, int index) { x
if (index >= pq.size() || index < 0)
return false;
int count = 0;
for(Object o : pq)
if (count++ == index)
return pq.remove(o);
return false; //nunca chega aqui, já que index < pq.size(), vai com certeza remover algum item antes
}