Ordenação de um array

2 respostas
F

Seja o código(não fui eu quem fez)

public static void inverter (int vet [], int m, int n){
        int x;  /*  1), esse m e n poderiam ser declarados sem ser por parâmetro? */

     if(! (n>m)){
     x=vet [m];
     vet [m] = vet [n];
     vet [n]= x;
     [color=blue]inverter (vet, m+1, n+1);[/color]
     /* 2) Essa última declaração em azul, como se chama? Uma função? Eu sei que se trata de uma pilha, mas quando o vetor for ordenado, vai ser entregue a outro método?*/



     }

}

2 Respostas

ViniGodoy
  1. Não. A função precisa do vetor e precisa saber quais são serão os dois índices a serem trocados.
  2. Isso é uma chamada de função. Como a função chama ela mesma, chamamos isso de recursão.
    Isso não se trata exatamente da estrutura de dados pilha. O que acontece é que, a cada chamada de função, o java memoriza qual era o ponto do programa anterior a chamada, para que quando a função termine ele volte para lá. E para isso sim, o java usa uma pilha…
ViniGodoy

Essa função me parece ter erro também. Se você chama-la com m > n, vai obter uma ArrayIndexOutOfBoundsException.

Criado 21 de novembro de 2007
Ultima resposta 21 de nov. de 2007
Respostas 2
Participantes 2