análise de algoritmos - instituto de matemática e …jose/radix.pdfordenação digital (=radix...
TRANSCRIPT
![Page 1: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/1.jpg)
Análise de Algoritmos
Zé Augusto
Adaptado de slides de José Coelho ePaulo Feofiloff
Abril de 2008
![Page 2: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/2.jpg)
Ordenação em tempo linear
CLRS 8.2–8.3
![Page 3: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/3.jpg)
Ordenação por contagemRecebe vetores A[1 . . n] e B[1 . . n] e devolve no vetor B[1 . . n] oselementos de A[1 . . n] em ordem crescente.
Cada A[i] está em 0, . . . , k.
Entra: 1 2 3 4 5 6 7 8 9 10A 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
Sai: 1 2 3 4 5 6 7 8 9 10B 0 0 0 2 2 3 3 3 5 5
![Page 4: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/4.jpg)
Ordenação por contagemRecebe vetores A[1 . . n] e B[1 . . n] e devolve no vetor B[1 . . n] oselementos de A[1 . . n] em ordem crescente.
Cada A[i] está em 0, . . . , k.
Entra: 1 2 3 4 5 6 7 8 9 10A 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
Sai: 1 2 3 4 5 6 7 8 9 10B 0 0 0 2 2 3 3 3 5 5
![Page 5: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/5.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
1 2 3 4 5 6 7 8 9 10A 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
![Page 6: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/6.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
1 2 3 4 5 6 7 8 9 10A 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C
![Page 7: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/7.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
1 2 3 4 5 6 7 8 9 10A 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 0 0 0 0 0 0
![Page 8: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/8.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 0 0 1 0 0 0
![Page 9: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/9.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 0 0 1 0 0 1
![Page 10: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/10.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 0 0 1 1 0 1
![Page 11: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/11.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 1 0 1 1 0 1
![Page 12: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/12.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 1 0 2 1 0 1
![Page 13: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/13.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 1 0 2 2 0 1
![Page 14: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/14.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 2 0 2 2 0 1
![Page 15: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/15.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 2 0 2 2 0 2
![Page 16: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/16.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 2 0 2 3 0 2
![Page 17: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/17.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 3 0 2 3 0 2
![Page 18: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/18.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
1 10A 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 3 0 2 3 0 2
![Page 19: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/19.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
1 10A 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 3 3 2 3 0 2
![Page 20: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/20.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
1 10A 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 3 3 5 3 0 2
![Page 21: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/21.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
1 10A 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 3 3 5 8 0 2
![Page 22: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/22.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
1 10A 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 3 3 5 8 8 2
![Page 23: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/23.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
1 10A 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 3 3 5 8 8 10
![Page 24: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/24.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B
0 1 2 3 4 5C 3 3 5 8 8 10
![Page 25: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/25.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B 0
0 1 2 3 4 5C 2 3 5 8 8 10
![Page 26: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/26.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B 0 3
0 1 2 3 4 5C 2 3 5 7 8 10
![Page 27: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/27.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B 0 3 5
0 1 2 3 4 5C 2 3 5 7 8 9
![Page 28: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/28.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B 0 0 3 5
0 1 2 3 4 5C 1 3 5 7 8 9
![Page 29: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/29.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B 0 0 3 3 5
0 1 2 3 4 5C 1 3 5 6 8 9
![Page 30: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/30.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B 0 0 2 3 3 5
0 1 2 3 4 5C 1 3 4 6 8 9
![Page 31: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/31.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B 0 0 0 2 3 3 5
0 1 2 3 4 5C 0 3 4 6 8 9
![Page 32: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/32.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B 0 0 0 2 3 3 3 5
0 1 2 3 4 5C 0 3 4 5 8 9
![Page 33: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/33.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B 0 0 0 2 3 3 3 5 5
0 1 2 3 4 5C 0 3 4 5 8 8
![Page 34: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/34.jpg)
Ordenação por contagem
Cada A[i] está em 0, . . . , 5.
jA 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B 0 0 0 2 2 3 3 3 5 5
0 1 2 3 4 5C 0 3 3 5 8 8
![Page 35: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/35.jpg)
Ordenação por contagem
COUNTING-SORT (A, B, n, k)1 para i← 0 até k faça2 C[i]← 0
3 para j← 1 até n faça4 C[A[j]]← C[A[j]] + 1
B C[i] é o número de js tais que A[j] = i
5 para i← 1 até k faça6 C[i]← C[i] + C[i− 1]
B C[i] é o número de js tais que A[j] ≤ i
7 para j← n decrescendo até 1 faça8 B[C[A[j]]]← A[j]9 C[A[j]]← C[A[j]]− 1
Obs: são feitas 0 comparações entre elementos do vetor.
![Page 36: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/36.jpg)
Consumo de tempo
linha consumo na linha
1−2 Θ(k)3−4 Θ(n)5−6 Θ(k)7−9 Θ(n)
Consumo total: Θ(n + k)
![Page 37: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/37.jpg)
Conclusões
O consumo de tempo do COUNTING-SORT é Θ(n + k).
I se k ≤ n então consumo é Θ(n)I se k ≤ 10n então consumo é Θ(n)I se k = O(n) então consumo é Θ(n)I se k ≥ n2 então consumo é Θ(k)I se k = Ω(n) então consumo é Θ(k)
![Page 38: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/38.jpg)
Estabilidade
A propósito: COUNTING-SORT é estável:
na saída, chaves com mesmo valor estão na mesmaordem que apareciam na entrada.
A 2 5 3 0 2 3 0 5 3 0
1 2 3 4 5 6 7 8 9 10B 0 0 0 2 2 3 3 3 5 5
![Page 39: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/39.jpg)
Ordenação digital (=radix sort)
Exemplo:
329457657839436720355
720355436457657329839
720329436839355457657
329355436457657720839
Cada A[j] têm d dígitos decimais:A[j] = ad 10d−1 + · · ·+ a2 101 + a1 100
Exemplo com d = 3: 3 · 102 + 2 · 10 + 9
![Page 40: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/40.jpg)
Ordenação digital (=radix sort)
Exemplo:
329457657839436720355
720355436457657329839
720329436839355457657
329355436457657720839
Cada A[j] têm d dígitos decimais:A[j] = ad 10d−1 + · · ·+ a2 101 + a1 100
Exemplo com d = 3: 3 · 102 + 2 · 10 + 9
![Page 41: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/41.jpg)
Ordenação digital (=radix sort)
Exemplo:
329457657839436720355
720355436457657329839
720329436839355457657
329355436457657720839
Cada A[j] têm d dígitos decimais:A[j] = ad 10d−1 + · · ·+ a2 101 + a1 100
Exemplo com d = 3: 3 · 102 + 2 · 10 + 9
![Page 42: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/42.jpg)
Ordenação digital (=radix sort)
Exemplo:
329457657839436720355
720355436457657329839
720329436839355457657
329355436457657720839
Cada A[j] têm d dígitos decimais:A[j] = ad 10d−1 + · · ·+ a2 101 + a1 100
Exemplo com d = 3: 3 · 102 + 2 · 10 + 9
![Page 43: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/43.jpg)
Ordenação digital (=radix sort)
Exemplo:
329457657839436720355
720355436457657329839
720329436839355457657
329355436457657720839
Cada A[j] têm d dígitos decimais:A[j] = ad 10d−1 + · · ·+ a2 101 + a1 100
Exemplo com d = 3: 3 · 102 + 2 · 10 + 9
![Page 44: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/44.jpg)
Ordenação digital
RADIX-SORT (A, n, d)1 para i← 1 até d faça2 B 1 até d e não o contrário!3 ordene A[1 . . n] pelo dígito i
Linha 3:I faz ordenação A[j1 . . jn] de A[1 . . n] tal que
A[j1]i ≤ · · · ≤ A[jn]i;
I ordenação deve ser estável; eI use COUNTING-SORT.
![Page 45: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/45.jpg)
Exemplos
I dígitos decimais: Θ(dn)I dígitos em 0 . . k: Θ(d (n + k)).
Exemplo com d = 5 e k = 127:
a51284 + a41283 + a31282 + a2128 + a1
sendo 0 ≤ ai ≤ 127
![Page 46: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/46.jpg)
Conclusão
Dados n números com b bits e um inteiro r ≤ b,RADIX-SORT ordena esses números em tempo
Θ(b
r(n + 2r)
).
Prova: Considere cada chave com d = db/re dígitos com r bitscada.
Use COUNTING-SORT com k = 2r − 1.Cada passada do COUNTING-SORT: Θ(n + k) = Θ(n + 2r).Tempo total:
Θ(d(n + 2r)) = Θ(b
r(n + 2r)
).
![Page 47: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/47.jpg)
Conclusão
Dados n números com b bits e um inteiro r ≤ b,RADIX-SORT ordena esses números em tempo
Θ(b
r(n + 2r)
).
Prova: Considere cada chave com d = db/re dígitos com r bitscada.Use COUNTING-SORT com k = 2r − 1.
Cada passada do COUNTING-SORT: Θ(n + k) = Θ(n + 2r).Tempo total:
Θ(d(n + 2r)) = Θ(b
r(n + 2r)
).
![Page 48: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/48.jpg)
Conclusão
Dados n números com b bits e um inteiro r ≤ b,RADIX-SORT ordena esses números em tempo
Θ(b
r(n + 2r)
).
Prova: Considere cada chave com d = db/re dígitos com r bitscada.Use COUNTING-SORT com k = 2r − 1.Cada passada do COUNTING-SORT: Θ(n + k) = Θ(n + 2r).
Tempo total:
Θ(d(n + 2r)) = Θ(b
r(n + 2r)
).
![Page 49: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/49.jpg)
Conclusão
Dados n números com b bits e um inteiro r ≤ b,RADIX-SORT ordena esses números em tempo
Θ(b
r(n + 2r)
).
Prova: Considere cada chave com d = db/re dígitos com r bitscada.Use COUNTING-SORT com k = 2r − 1.Cada passada do COUNTING-SORT: Θ(n + k) = Θ(n + 2r).Tempo total:
Θ(d(n + 2r)) = Θ(b
r(n + 2r)
).
![Page 50: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/50.jpg)
Bucket sort
Bucket sort: algoritmo de ordenação em tempo esperadolinear.
Descrito em CRLS 8.4.
![Page 51: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/51.jpg)
Exercícios
Exercício 1.AO seguinte algoritmo promete rearranjar o vetor A[1 . . n] emordem crescente supondo que cada A[i] está em 0, . . . , k. Oalgoritmo está correto?
C-SORT (A, n, k)para i← 0 até k faça
C[i]← 0para j← 1 até n faça
C[A[j]]← C[A[j]] + 1j← 1para i← 0 até k faça
enquanto C[i] > 0 façaA[j]← ij← j + 1C[i]← C[i]− 1
Qual o consumo de tempo do algoritmo?
![Page 52: Análise de Algoritmos - Instituto de Matemática e …jose/radix.pdfOrdenação digital (=radix sort) Exemplo: 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436](https://reader030.vdocuments.com.br/reader030/viewer/2022021520/5be5167509d3f2f4628da850/html5/thumbnails/52.jpg)
Mais exercíciosExercício 1.BO seguinte algoritmo promete rearranjar o vetor A[1 . . n] em ordemcrescente supondo que cada A[j] está em 1, . . . , k. O algoritmoestá correto? Estime, em notação O, o consumo de tempo doalgoritmo.
VITO-SORT (A, n, k)1 i← 12 para a← 1 até k − 1 faça3 para j← i até n faça4 se A[j] = a5 então A[j]↔ A[i] B troca6 i← i + 1
Exercício 1.CSuponha que os components do vetor A[1 . . n] estão todos em 0, 1.Prove que n− 1 comparações são suficientes para rearranjar o vetorem ordem crescente.
Exercício 1.DQual a principal invariante do algoritmo RADIX-SORT?