Académique Documents
Professionnel Documents
Culture Documents
CCF130
Contedo
Bubble sort
Insero direta
Insero direta
Algoritmo bsico
Repita i, de 1 at tamanho do arquivo z = elemento da vez Localiza a posio da insero entre i-1 e 0 Desloca elementos 1 posio direita Insere z 25 57 48 37 12 92 86 33 25 57 48 37 12 92 86 33 25 48 57 37 12 92 86 33 25 37 48 57 12 92 86 33 12 25 37 48 57 92 86 33 12 25 37 48 57 92 86 33 12 25 37 48 57 86 92 33 12 25 33 37 48 57 86 92
Insero direta
Exerccio
Insero direta
Possvel implementao
25 25 25 25 12 12 12 12
57 57 48 37 25 25 25 25
48 48 57 48 37 37 37 33
37 37 37 57 48 48 48 37
12 12 12 12 57 57 57 48
92 92 92 92 92 92 86 57
86 86 86 86 86 86 92 86
33 33 33 33 33 33 33 92
void insertSort (int x[], int tam) { int i, j, z; for (i = 1; i < tam; i++) { z = x[i]; for (j = i - 1; (j >= 0) && (z < x[j]); j--) x[j + 1] = x[j]; x[j + 1] = z; } }
Exerccio 1
Ordene o vetor a seguir pelo mtodo da insero direta e verifique o nmero de deslocamentos necessrios 5 4 3 2 1
Exerccio 1 (implementao)
Implemente um programa em linguagem C que leia um vetor de at 20 inteiros. O vetor deve ento ser passado como parmetro para a funo insertSort, que deve orden-lo segundo o mtodo da insero direta. Finalmente, o programa deve imprimir o vetor ordenado.
Seleo direta
Seleo direta
Algoritmo bsico
Repita i, de 0 at tamanho do arquivo 1 k = menor elemento entre i e o final do arquivo p = posio do elemento k trocar elemento da pos i com elemento da pos p 25 12 12 12 12 12 12 12 12 57 57 25 25 25 25 25 25 25 48 48 48 33 33 33 33 33 33 37 37 37 37 37 37 37 37 37 12 25 57 57 48 48 48 48 48 92 92 92 92 92 92 57 57 57 86 86 86 86 86 86 86 86 86 33 33 33 48 57 57 92 92 92
Seleo direta
Exerccio
Seleo direta
Possvel implementao
void selectSort (int x[], int tam){ int i, j, z, p; for (i = 0; i < tam-1; i++) { p = i; for (j = i + 1; j <= tam; j++) if (x[j] < x[p]) p = j; 25 57 48 37 if (p != i) { 12 57 48 37 z = x[p]; 12 25 48 37 x[p] = x[i]; 12 25 33 37 12 25 33 37 x[i] = z; 12 25 33 37 } 12 25 33 37 } 12 25 33 37 }
12 25 57 57 48 48 48 48 12 25 33 37 48
92 92 92 92 92 92 57 57 57
86 86 86 86 86 86 86 86 86
33 33 33 48 57 57 92 92 92
Exerccio 2
Ordene o vetor a seguir pelo mtodo da seleo direta e verifique o nmero de deslocamentos necessrios
1 troca = 2 deslocamentos
Exerccio 2 (implementao)
Implemente um programa em linguagem C que leia um vetor de at 20 inteiros. O vetor deve ento ser passado como parmetro para a funo selectSort, que deve orden-lo segundo o mtodo da seleo direta. Finalmente, o programa deve imprimir o vetor ordenado.
Variaes
Realizando algumas modificaes nos algoritmos de insero e seleo diretas, obtemos algoritmos mais eficientes
O Shellsort uma variante da insero direta O Heapsort uma variante da seleo direta
Bubble Sort
Mtodo de ordenao por troca (assim como o Quicksort) Idia bsica
Bubble Sort
25 57 48 37 12 92 86 33 25 57 57 48 57 37 57 12 57 92 92 86 92 33 25 48 37 12 57 86 33 92
Bubble Sort
25 48 37 12 57 86 33 92 25 48 48 37 48 12 48 57 57 86 86 33 25 37 12 48 57 33 86 92
Bubble Sort
25 25 12 12 12 12 12 37 12 25 25 25 25 25 12 37 37 33 33 33 33 48 48 33 37 37 37 37 57 33 48 48 48 48 48 33 57 57 57 57 57 57 86 86 86 86 86 86 86 92 92 92 92 92 92 92
Bubble Sort
Algoritmo bsico
Repita i, de 0 at tamanho do arquivo Repita j, de 0 at tam-i Se x[j] > x[j+1] troca elementos de posio 25 25 12 12 12 12 12 37 12 25 25 25 25 25 12 37 37 33 33 33 33 48 48 33 37 37 37 37 57 33 48 48 48 48 48 33 57 57 57 57 57 57 86 86 86 86 86 86 86 92 92 92 92 92 92 92
Bubble Sort
Exerccio
Bubble Sort
Ooops!
Espere...
25 25 12 12 12 12 12
37 12 25 25 25 25 25
12 37 37 33 33 33 33
48 48 33 37 37 37 37
57 33 48 48 48 48 48
33 57 57 57 57 57 57
86 86 86 86 86 86 86
92 92 92 92 92 92 92
Bubble Sort
Repita i, de 0 at tamanho do arquivo ou no haja troca Repita j, de 0 at tam-i Se x[j] > x[j+1] troca elementos de posio
Bubble Sort
Anlise de desempenho
Exerccio 3 (implementao)
Implemente um programa em linguagem C que leia um vetor de at 20 inteiros. O vetor deve ento ser passado como parmetro para a funo BubleSort, que deve orden-lo segundo o algoritmo da bolha. Finalmente, o programa deve imprimir o vetor ordenado.