Entretanto tal alteração resulta em ArrayOutOfBounds. Alguém pode me explicar por que isso acontece? Eu já tinha usado esse segundo for várias vezes dessa maneira e só agora está apresentando essa diferença. Eu quero percorrer todo o array A, então não vejo o porque de dar problema;
Na primeira versao do for, você tem os indíces do array e acessa os elementos de A atráves do indíce: A[i]
Na segunda versao, ele já te automaticamente os elementos, ou seja, você pode usar o i diretamente: aux[i]
Esse seu algoritmo parece meio estranho pois você pode criar um array gigantesco dependendo dos valores contidos em A, pelo que entendi. Se você tiver um array como A = [1,10,1000000], seu array aux será criado com 1000001 posiçoes, é isso mesmo que quer?
P
paulo.rogeriobr
Pela assinatura do metodo você deseja contar e ordenar um array passando um parametro para ordenação com chamado maior para ser ordenado. É isso?
W
WonK
Sim, é assim que funciona o algoritmo countingSort, não é?
W
WonK
maior é o maior elemento do array. Ele cria um array auxiliar com tamanho maior + 1 e vai contando ocorrência. Algo assim, mas ainda tá dando problema:
Você tem razao, nao conhecia esse algoritmo. Mas li agora que ele nao é recomendado para dados arbitrários como os que passei de exemplo!
W
WonK
Obrigado por responder! Já consegui, o meu problema nesse algoritmo era com o zero dos arrays. Como eu tava vendo esse algoritmo de ordenação em pseudocódigo, tava confundindo (lá começava em 1).