Sera que alguem poderia me ajudar com heapsort

2 respostas
S

oi eu ando pesquisando sobre esse metodo de ordenaçao to to endendendo ai resolvi pegar alguns exemplos na net masi so que nao consigo entender oq ele faz e o que esta acontecendo sera que alguem poderia me ajudar me passando um exmplo com algumas explicaçoes para poder entender melhor ficaria muito grata.Desde ja fico muito grata.

2 Respostas

fantomas

Oi ssica silva,

Esse algoritmo não é muito fácil de entender, ao menos na minha opinião. Um ponto que com certeza gera bastante confusão neste algoritmo é a recursividade que é utilizada para atingir a ordenação da lista de dados.

Vou te dar uma dica de uma técnica antiga, trabalhosa e extremamente chata  :twisted: mas muito eficiente para atingir o entendimento deste algoritmo e de vários outros que poderão surgir na sua frente (talvez vc até já saiba fazer isso).

A galerinha das antigas chamavam essa arma (essa técnica) de TESTE DE MESA, vamos lá:

a) Pegue um código que esteja executando sem erros e que esteja lhe apresentado o resultado desejado.
    .Este código tem que ser inteligível por você, quero dizer que não pode haver nada de misterioso em termos de códificação. Porque o objetivo é entender o algoritmo e não a codificação.

b) Pegue um folha de papel (uma planilha eletronica poderia ser bastante interessante e prática) e faça uma lista dos dados que você quer ordernar. Esta lista tem que ser igual a que você irá colocar no programa para ordenar.

c) Ao lado de cada item da lista (que vc escreveu no papel) coloque a posição que o item ocupa na lista Ex:
      +--+-------------+
       | 0 | Cacilda     |
      +---+------------+
       | 1 | Bernadete |
      +---+------------+
       | 2 | Zuleika     |
              .......
 d) Execute o programa em modo debugger e siga passo a passo a execução.
     .Toda alteração que o programa fizer na lista de dados vc altera na mão a sua lista no papel, a sua referencia será os números que vc colocou no lado dos itens, que vc poderá verificar pelo debugger.

  Na verdade tudo isso você poderá fazer apenas utilizando o debugger verificando a cada passo do processamento o que aconteceu com sua lista. O problema com isso é que a pessoa acaba se perdendo porque há muita iteração em cima da lista e a idéia das fases vai se perdendo prejudicando o entendimento do algoritmo.

  Esta técnica permite que vc tenha uma visão geral e detalhada ao mesmo tempo do que está acontecendo, sem falar que as alterações na lista será você mesma quem estara executando junto com o micro.

  Porisso os caras chamavam isto de TESTE DE MESA, porque a simulação da execução era feita na mão.
   
  Desculpe por não ter uma idéia melhor e menos confusa que essa  :(

System.out.println( “Abraços e boa sorte” );

TangZero

:lol:

É impressão minha ou você tá pedindo ajuda em outros lugares?

http://www.javafree.org/javabb/viewtopic.jbb?t=868572&me-ajuda-com-heapsort

Criado 26 de maio de 2008
Ultima resposta 27 de mai. de 2008
Respostas 2
Participantes 3