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

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

ORDENAÇÃO POR CONTAGEM

Apresentações semelhantes


Apresentação em tema: "ORDENAÇÃO POR CONTAGEM"— Transcrição da apresentação:

1 ORDENAÇÃO POR CONTAGEM
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 5 9 2 7 2 8 9 5 A = 7 B =  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.

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

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

9 SIMULAÇÃO - COUNTING SORT
Se o valor de um elemento de entrada é i, incrementamos C[i]: 2 3 1 C = C[i] contém um número de elementos de entrada igual a i para cada i = 0,1,2,...,k. Agora fazemos C[i] = C[i] + C[i-1] para determinarmos quantos elementos de entrada são menores que ou iguais a i: 2 4 7 8 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: Exemplo: Para j = 8 B[C[A[8]]]  B[C[3]]  B[7] B[7] = A[8]  B[7] = 3

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. 2 4 7 8 C = C[3] = C[3] – 1: 2 4 6 7 8 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!!! 2 3 5 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 "ORDENAÇÃO POR CONTAGEM"

Apresentações semelhantes


Anúncios Google