Ordenação de um array

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

[code]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?*/



 }

}[/code]

  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…

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