Sunteți pe pagina 1din 16

1.

Radix sort

2.Motivao
2.1Definio do problema 2.1.1Descrio Informal O radix sort ou ordenao digital surgiu para resolver o problema de ordenao de cartes perfurados. Esses cartes possuam um nmero de colunas na qual era possvel uma perfurao em posies. Assim, eram examinadas as perfuraes coluna a coluna e de acordo com a posio da perfurao os cartes eram distribudos de

forma iterativa em p caixas c vezes, no final tnhamos os cartes ordenados. importante observar que enquanto ocorre a ordenao, ao longo do processo iterativo no se pode mudar a ordem das caixas. 2.1.2Definio Formal do Problema Entrada: Temos um conjunto de nmeros Questo: Como podemos ordenar esses nmeros (neste caso, sem comparaes)? Sada: Conjunto de nmeros ordenado

2.2Exemplo de instncia
Como podemos ordenar o seguinte conjunto de nmeros sem a necessidade de comparlos?

176, 44, 80, 9, 15,76

3.1Descrio da ideia do algoritmo


O algoritmo funciona analisando o conjunto de nmeros a serem ordenados,os algarismos de posio menos significativa para a posio mais significativa, num processo iterativo para cada posio, ordenando provisoriamente cada nmero a cada passo da iterao e chegando ao final do processo com os elementos de fato ordenados.

3.2 Exemplo de soluo da instncia


1 passo da iterao:
176, 44, 80, 9, 15,76 -> 176,044,080,009,015,076

0 -> 080 1 2 3 4 -> 044 5 -> 015

6 -> 176,076 7 8 9 -> 009

2 passo da iterao
080,044,015,176,076,009
0 -> 009 1 -> 015 2 3 4 ->044 5 6 7 -> 176,076 8 -> 080 9 ->

3 passo da iterao
009,015,044,176,076,080 0 -> 009,015,044,076,080 1 -> 176 67283945sada: 009,015,044,076,080,176

3.3Descrio formal do algoritmo


para i = 1..d faa para j = 1..n faa k:= i-simo dgito menos significativo da representao de L[j].chave na base b Fk <= L[j] j := 1 para k = 0..b - 1 faa enquanto Fk (diferente de) faa L[j] <= Fk
j := j + 1

3.4Detalhar as etapas da aplicao tcnica


O radix-sort faz uso de filas que auxiliam no armazenamento intermedirio dos elementos a serem ordenados, em cada iterao, bem como das operaes de insero e remoo.

3.5 Implementao do radix-sort em C

void RADIXSORT(int elemento[], int digito) { int i; int b[digito]; int maior = elemento[0]; int exp = 1; for (i = 0; i < digito; i++) { if (elemento[i] > maior) maior = elemento[i]; } while (maior/exp > 0) { int bucket[10] = { 0 }; for (i = 0; i < digito; i++) bucket[(elemento[i] / exp) % 10]++; for (i = 1; i < 10; i++) bucket[i] += bucket[i - 1]; for (i = digito - 1; i >= 0; i--) b[--bucket[(elemento[i] / exp) % 10]] = elemento[i]; for (i = 0; i < digito; i++) elemento[i] = b[i]; exp *= 10; } }

4.Anlise do Algoritmo
4.1Prova de corretude Considerando uma entrada qualquer de n nmeros e d dgitos, ao final da primeira iterao temos que o algoritmo ter ordenado os n nmeros em relao ao dgito menos significativo, assim por induo, temos que nas prximas iteraes o algoritmo ter ordenado os d-1 dgitos restantes, dos n nmeros, o que resultar na ordenao dos n nmeros.

4.2Demonstrao da complexidade
Quando cada dgito est numa base na qual seu valor varia de 0 a b-1 (exemplo, de 0 a 9), temos que cada passagem sobre os n nmeros de d dgitos, para sua ordenao, leva o tempo (n + b), como so d passagens, temos (d(n + b)) mas, d o nmero de dgitos dos nmeros que uma constante portanto, d*(n + b) = (n + b) = mx((n),(b)) que indica que o radix-sort pode ser executado em tempo linear.

4.Concluso e discusses
4.1 Vantagens e desvantagens do radix-sort - um dos algoritmos de ordenao mais rpidos -simples -intuitivo -pode ser bem custoso se for necessrio avaliar elementos com diferentes nmeros de dgitos -pode requerer diferentes implementaes dependendo do tipo de dado

4.2 possvel fazer melhor?


Se considerarmos ordenaes nas quais seja possvel fazer comparaes o merge-sort talvez pudesse ser uma escolha de menor tempo de execuo.

5.Referncias Bibliogrficas
1.Radix Sort. (2003). WIKIPEDIA. Site. Disponvel em: <http://pt.wikipedia.org/wiki/Radix_sort>. Acesso em: 01 out. 2013. 2.CORMEN, Thomas H.. Algoritmos: teria e prtica. Rio de Janeiro: Editora Campus, 2002. 3.SZWARCFITER, Jayme Luiz Estruturas de Dados e Seus Algoritmos. Rio de Janeiro Editora LTC, 2010.

S-ar putea să vă placă și