Olá galerinha do Portal Java!
Bem, mais uma vez venho pedir sua ajuda 
estou tentando implementar um algoritmo de ordenação chamado COUNTINGSORT e encontro um erro tipo java.lang.ArrayIndexOutOfBoundsException
que não consigo solucionar.
o programinha é composto de duas classes e seque abaixo:
import java.util.Random;
import java.util.Scanner;
public class CountingSortTest
{
public static void main(String args[])
{
//escolhe o tamanho do array
System.out.println("BEM VINDO AO PROGRAMA DE ORDENAÇÃO COUNTINGSORT.");
System.out.println("Digite o tamanho do array que você deseja gerar ==>");
Scanner input = new Scanner(System.in);
int num = input.nextInt();
//gera o array com números aleatórios
Random random = new Random();
int[] vet = new int[num];
for(int i = 0; i < vet.length; i++)
vet[i] = random.nextInt(num);
CountingSort ordena = new CountingSort(vet);
}
}
--------------------------------------------------------------------------------------
public class CountingSort
{
private int[] A; //vetor desorganizado
private int[] B; //vetor que conterá os elementos de A ordenados
private int[] C; //vetor auxiliar
int k; //maior elemento de vet
int n; //tamanho de vet
public CountingSort(int[] v)
{
A = v;
n = A.length;
B = new int[n];
k = max(A);
C = new int[k];
System.out.println("************************************************");
System.out.println("Array desordenado:");
print(A);
System.out.println();
System.out.println("************************************************");
countingSort();
System.out.println("Array ordenado:");
print(B);
System.out.println();
System.out.println("************************************************");
System.out.println("FIM DO PROGRAMA...");
}
private int max(int[] v) //acha o maior elemento de vet
{
int temp = v[0];
for(int i = 1; i < v.length; i++)
{
if(v[i] > temp)
temp = v[i];
}
return temp;
}
private void countingSort()
{
for(int i = 0; i < k; k++)
C[i] = 0;
for(int i = 0; i < n; i++)
C[A[i]] = C[A[i]] + 1;
for(int i = 1; i < k; i++)
C[i] = C[i] + C[i - 1];
for(int j = n; j >= 0; j--)
{
B[C[A[j]]] = A[j];
C[A[j]] = C[A[j]] - 1;
}
}
private void print(int []v) //imprime os elementos de um vetor v qualquer
{
for( int p : v)
System.out.printf("| %d | ", p);
}
}
[* Editado por: Diana - Use BBCode !]
obrigado!
