Your SlideShare is downloading. ×
0
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

ordenacao shellsort quicksort em C

848

Published on

Métodos de ordenação, aula.

Métodos de ordenação, aula.

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
848
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
31
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. M´etodos de Ordena¸c˜ao: ShellSort e QuickSort Professor: Silvio Luiz Bragatto Boss e-mail: silvioboss@utfpr.edu.br Universidade Tecnol´ogica Federal do Paran´a - UTFPR Coordenac¸˜ao de Inform´atica - COINF Curso de Engenharia de Computac¸˜ao Disciplina de Estrutura de Dados I
  • 2. M´etodos de Ordena¸c˜ao Sum´ario 1 M´etodos de Ordena¸c˜ao Shell Sort Quick Sort Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 3. M´etodos de Ordena¸c˜ao Shell Sort Proposto por Shell em 1959; Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 4. M´etodos de Ordena¸c˜ao Shell Sort Proposto por Shell em 1959; ´E uma extens˜ao do algoritmo de ordena¸c˜ao por inser¸c˜ao; Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 5. M´etodos de Ordena¸c˜ao Shell Sort Proposto por Shell em 1959; ´E uma extens˜ao do algoritmo de ordena¸c˜ao por inser¸c˜ao; Problema com o algoritmo de ordena¸c˜ao por inser¸c˜ao: Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 6. M´etodos de Ordena¸c˜ao Shell Sort Proposto por Shell em 1959; ´E uma extens˜ao do algoritmo de ordena¸c˜ao por inser¸c˜ao; Problema com o algoritmo de ordena¸c˜ao por inser¸c˜ao: Troca itens adjacentes para determinar o ponto de inser¸c˜ao; Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 7. M´etodos de Ordena¸c˜ao Shell Sort Proposto por Shell em 1959; ´E uma extens˜ao do algoritmo de ordena¸c˜ao por inser¸c˜ao; Problema com o algoritmo de ordena¸c˜ao por inser¸c˜ao: Troca itens adjacentes para determinar o ponto de inser¸c˜ao; S˜ao efetuadas n-1 compara¸c˜oes e movimenta¸c˜oes quando o menor item est´a na posi¸c˜ao mais `a direita no vetor. Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 8. M´etodos de Ordena¸c˜ao Shell Sort Proposto por Shell em 1959; ´E uma extens˜ao do algoritmo de ordena¸c˜ao por inser¸c˜ao; Problema com o algoritmo de ordena¸c˜ao por inser¸c˜ao: Troca itens adjacentes para determinar o ponto de inser¸c˜ao; S˜ao efetuadas n-1 compara¸c˜oes e movimenta¸c˜oes quando o menor item est´a na posi¸c˜ao mais `a direita no vetor. O m´etodo de Shell contorna este problema permitindo trocas de registros distantes um do outro. Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 9. M´etodos de Ordena¸c˜ao Shell Sort Ao inv´es de possuir apenas uma lista, no shellsort existem v´arias listas; Assumindo que existe uma sequencia de n´umeros 12 43 1 6 56 23 52 9. Esta sequencia (lista) ser´a quebrada em v´arias listas baseada num “pulo” de um n´umero para outro. Por exemplo: com pulo valendo 4, teremos os n´umeros selecionados de 4 em quatro posi¸c˜oes. Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 10. M´etodos de Ordena¸c˜ao Shell Sort Como escolher o pulo ? O valor escolhido para o “pulo” muda os valores obtidos na sequencia e tamb´em ir´a impactar na quantidade de testes de o algoritmo precisa fazer para encontrar a solu¸c˜ao final; Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 11. M´etodos de Ordena¸c˜ao Shell Sort Como escolher o pulo ? O valor escolhido para o “pulo” muda os valores obtidos na sequencia e tamb´em ir´a impactar na quantidade de testes de o algoritmo precisa fazer para encontrar a solu¸c˜ao final; Existem alguns estudos na literatura para obter uma solu¸c˜ao ´otima do algoritmo em fun¸c˜ao da escolha do valor de “pulo”; Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 12. M´etodos de Ordena¸c˜ao Shell Sort Como escolher o pulo ? O valor escolhido para o “pulo” muda os valores obtidos na sequencia e tamb´em ir´a impactar na quantidade de testes de o algoritmo precisa fazer para encontrar a solu¸c˜ao final; Existem alguns estudos na literatura para obter uma solu¸c˜ao ´otima do algoritmo em fun¸c˜ao da escolha do valor de “pulo”; No nosso estudo, utilizaremos uma forma f´acil de escolher o valor de pulo e que ´e claro, n˜ao ser a melhor solu¸c˜ao poss´ıvel; Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 13. M´etodos de Ordena¸c˜ao Shell Sort Como escolher o pulo ? O valor escolhido para o “pulo” muda os valores obtidos na sequencia e tamb´em ir´a impactar na quantidade de testes de o algoritmo precisa fazer para encontrar a solu¸c˜ao final; Existem alguns estudos na literatura para obter uma solu¸c˜ao ´otima do algoritmo em fun¸c˜ao da escolha do valor de “pulo”; No nosso estudo, utilizaremos uma forma f´acil de escolher o valor de pulo e que ´e claro, n˜ao ser a melhor solu¸c˜ao poss´ıvel; Em virtude da quantidade de compara¸c˜oes e trocas de elementos ser uma fun¸c˜ao da escolha deste n´umero, a complexidade deste m´etodo ´e dif´ıcil de representar; Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 14. M´etodos de Ordena¸c˜ao Shell Sort Como escolher o pulo ? O valor escolhido para o “pulo” muda os valores obtidos na sequencia e tamb´em ir´a impactar na quantidade de testes de o algoritmo precisa fazer para encontrar a solu¸c˜ao final; Existem alguns estudos na literatura para obter uma solu¸c˜ao ´otima do algoritmo em fun¸c˜ao da escolha do valor de “pulo”; No nosso estudo, utilizaremos uma forma f´acil de escolher o valor de pulo e que ´e claro, n˜ao ser a melhor solu¸c˜ao poss´ıvel; Em virtude da quantidade de compara¸c˜oes e trocas de elementos ser uma fun¸c˜ao da escolha deste n´umero, a complexidade deste m´etodo ´e dif´ıcil de representar; Sabe-se que a complexidade, no pior caso, para a pior escolha de valor de “pulo” ser´a O(n2). Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 15. M´etodos de Ordena¸c˜ao Shell Sort void shellsort (int a[], int n) { int i, j, k, h, v; h=1; do { h = 3*h+1; } while(h < n); do { h =h / 3; for (i=h; i<n; i++) { v=a[i]; j=i; while (j>=h && a[j-h]>v){ a[j]=a[j-h]; j=j-h; } a[j]=v; } }while (h >1); } Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 16. M´etodos de Ordena¸c˜ao Quicksort – Ordena¸c˜ao R´apida M´etodo proposto por C. A. Hoare, em 1962, na Universidade de Moscou; Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 17. M´etodos de Ordena¸c˜ao Quicksort – Ordena¸c˜ao R´apida M´etodo proposto por C. A. Hoare, em 1962, na Universidade de Moscou; ´E considerado o m´etodo de ordena¸c˜ao mais eficiente at´e hoje; Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 18. M´etodos de Ordena¸c˜ao Quicksort – Ordena¸c˜ao R´apida M´etodo proposto por C. A. Hoare, em 1962, na Universidade de Moscou; ´E considerado o m´etodo de ordena¸c˜ao mais eficiente at´e hoje; Utiliza a estrat´egia “dividir para conquistar”; Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 19. M´etodos de Ordena¸c˜ao Quicksort – Ordena¸c˜ao R´apida M´etodo proposto por C. A. Hoare, em 1962, na Universidade de Moscou; ´E considerado o m´etodo de ordena¸c˜ao mais eficiente at´e hoje; Utiliza a estrat´egia “dividir para conquistar”; Dividir um problema em subproblemas menores e combinar as solu¸c˜oes a fim de se obter a solu¸c˜ao do problema original; Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 20. M´etodos de Ordena¸c˜ao Quicksort – Ordena¸c˜ao R´apida O m´etodo consiste em: Escolher um pivˆo inicial x; Colocar todos itens com chave menor que a de x `a esquerda de x, formando uma sequˆencia S1; Colocar todos itens com chave maior que a de x `a direita de x, formando uma sequˆencia S2; Isto feito, o mesmo processo ´e aplicado `as sequˆencias S1 e S2, que por sua vez produzir˜ao novos segmentos; O processo deve ser aplicado sucessivamente `as sequˆencias enquanto elas tiverem tamanho 1. Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX
  • 21. M´etodos de Ordena¸c˜ao Quicksort – Ordena¸c˜ao R´apida void quickSort(int vet[], int min, int max){ if(min >= max) //array ordenado return; int i = min; j = max; int pivo = vet[(i+j)/2]; // valor do elemento central do{ //Dividir em duas partes while(vet[i] < pivo) i++; while(vet[j] > pivo) j--; if(i<=j){ if(vet[i] != vet[j]) troca(&vet[i],&vet[j]); i++; j-- } }while(i<=j); quickSort(vet,min,j); //ordenar parte esquerda quickSort(vet,i,max); //ordenar parte direita } Silvio Luiz Bragatto Boss UTFPR M´etodos de Ordena¸c˜ao LATEX

×