Ir ao conteúdo
  • Cadastre-se

C Algoritmo C em ranksort para ordenação de vetores.


Kaio123
Ir à solução Resolvido por V!OLADOR,

Posts recomendados

Poderiam me ajudar a entender o código abaixo, pois preciso preparar o programa para que seja possível ajustar a dimensão do vetor. 

 

int A[N], R[N]; 
main() { 
  ... 
  for (k = 0; k < 100; k++) 
    compute_rank(A[k]); 
  ... 
} 
compute_rank(int elem) { 
  int i, rank = 0; 
  for (i = 0; i < N; i++) 
    if (elem > A[i]) 
    rank++; 
  R[rank] = elem; 
} 

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Solução

Numa lista, no caso A, com N elementos fora de ordem, pra ordená-los (R) em ordem crescente, uma técnica pouco eficiente mas bem popular é o "rank sort". Pro n-ésimo elemento (n := 1, 2, ..., N) da lista, basta compará-lo com todos os demais e contar quantos são menores que ele. O total de valores menores que o elemento n é o seu rank, ou seja, sua posição numa lista devidamente ordenada, no caso R.

No trecho de código que você postou, a função compute_rank( ) testa o k-ésimo elemento de A (a.k.a elem) contra todos os demais e conta cada ocorrência (rank++) de valores menores que ele. Terminado o calculo do rank, na ultima linha de compute_rank( ), copia-se o k-ésimo elemento para a lista ordenada, R, usando agora o rank do elemento k.

 

O "rank sort" é da família de algorítimos nos quais a complexidade do calculo aumenta com ~ O(N^2).

 

Edit: aparentemente falta um void na definição do retorno da função compute_rank( ).

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...