A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

UFRPE – Licenciatura em Computação Curso: Prática e Ensino de Algoritmos Prof.: Breno Miranda e Natália Flora ORDENAÇÃO POR CONTAGEM.

Apresentações semelhantes


Apresentação em tema: "UFRPE – Licenciatura em Computação Curso: Prática e Ensino de Algoritmos Prof.: Breno Miranda e Natália Flora ORDENAÇÃO POR CONTAGEM."— Transcrição da apresentação:

1 UFRPE – Licenciatura em Computação Curso: Prática e Ensino de Algoritmos Prof.: Breno Miranda e Natália Flora ORDENAÇÃO POR CONTAGEM

2 Ordenação por Contagem  Algoritmo apresentado: Counting Sort

3 COUNTING SORT  Aspectos Positivos: Ordena vetores em tempo linear para o tamanho do vetor inicial; Não realiza comparações; É um algoritmo de ordenação estável;

4 COUNTING SORT  Aspecto Negativo: Necessita de dois vetores adicionais para sua execução, utilizando, assim, mais espaço na memória.

5 COUNTING SORT  Funcionamento: A ordenação por contagem pressupõe que cada um dos n elementos do vetor de entrada é um inteiro entre 1 e k (k representa o maior inteiro presente no vetor). A idéia básica é determinar, para cada elemento de entrada x, o numero de elementos menores ou iguais a x. Com essa informação é possível determinar exatamente onde o elemento x será inserido.

6 EXEMPLO  Na lista A acima o elemento circulado 7 possui 5 elementos menores que ele. Dessa forma o elemento 7 deverá ser inserido no índice 6 (5 + 1) do vetor de saída B A = 7 B =

7 ALGORITMO COUNTING SORT 01CountingSort(A, B, k) 02for I  0 to k 03 do C[i]  0 04for j  1 to comprimento [A] 05 do C[A[j]]  C[A[j]] for I  2 to k 07 do C[i] = C[i] + C[i-1] 08for j  comprimento [A] downto 1 09 do B[C[A[j]]] = A[j] 10C[A[j]] = C[A[j]] - 1

8 SIMULAÇÃO - COUNTING SORT O algoritmo recebe um vetor desordenado como entrada: Em seguida, gera os vetores adicionais B e C:  O vetor B é do mesmo tamanho do vetor A (8 elementos).  O vetor C é do tamanho do maior elemento de A + 1 (5 + 1 = 6) C = B = A =

9 SIMULAÇÃO - COUNTING SORT Se o valor de um elemento de entrada é i, incrementamos C[i]:  C[i] contém um número de elementos de entrada igual a i para cada i = 0,1,2,...,k C = Agora fazemos C[i] = C[i] + C[i-1] para determinarmos quantos elementos de entrada são menores que ou iguais a i: C =

10 SIMULAÇÃO - COUNTING SORT Agora, partindo do maior para o menor índice, fazemos B[C[A[j]]] = A[j]. Assim, colocamos cada elemento A[j] em sua Posição ordenada no vetor B:  Para j = 8 B[C[A[8]]]  B[C[3]]  B[7] B[7] = A[8]  B[7] = 3 Exemplo:

11 SIMULAÇÃO - COUNTING SORT Em seguida decrementamos o valor de C[A[j]] toda vez que Inserimos um valor no vetor B. isso faz com que o próximo elemento de entrada com valor igual a A[j], se existir, vá para a posição imediatamente anterior a A[j] no vetor B. C[3] = C[3] – 1: C = C =

12 SIMULAÇÃO - COUNTING SORT Após as iterações de (comprimento de [A] até 1) temos o vetor de saída B ordenado!!! B =

13 COUNTING SORT IN PYTHON def Countingsort(lista): k = maximo(lista) B = [0 for w in range(len(lista))] C = [0 for w in range(k+1)] for j in range(0,len(lista)): C[lista[j]] = C[lista[j]] + 1 for i in range(1,k+1): C[i] += C[i-1] for j in range(len(lista)-1,0,-1): B[C[lista[j]]-1] = lista[j] C[lista[j]] = C[lista[j]] - 1 return B

14 REFERÊNCIAS BIBLIOGRÁFICAS  CORMEN, T.H.; LEISERSON, C.E. and RIVEST, R.L. teoria e prática, 2002.


Carregar ppt "UFRPE – Licenciatura em Computação Curso: Prática e Ensino de Algoritmos Prof.: Breno Miranda e Natália Flora ORDENAÇÃO POR CONTAGEM."

Apresentações semelhantes


Anúncios Google