--- breaks: false tags: edb1 title: '2022-10-27 edb1 anotações de aula' --- # EDB1 - anotações de aula Algoritmos de ordenação. - 2u: - Bubble sort - 3u: - outros O bubble sort faz varredura por toda a série. É ineficiente $O(N^2)$. Nele, há: - comparação (entre pares de valores) - ordenação ## Comparação O modo ineficiente é, para cada elemento, comparar com todos os outros (`for` dentro de `for`). A fase de comparação pode ser: - por loop aninhado (ineficiente) - por loop único com verificação do próximo elemento (otimizado) - por recursão (reduzindo o tamanho da série) e comparando sempre o 1o e o 2o elementos. O custo dessa verificação é linear. No pior caso, será $O(N)$. ## Ordenação Maneiras de implementar: <!-- - por loop aninhado (ineficiente) --> - por loop único com verificação do próximo elemento (otimizado) - compara 2 elementos: - se posterior menor, troca - se posterior maior, ignora - por recursão (reduzindo o tamanho da série) e comparando sempre o 1o e o 2o elementos. ```c #include <stdio.h> void troca(char *v, int i, int j) { char aux; aux = v[i]; v[i] = v[j]; v[j] = aux; } void sort(char *v, int N) { int conflito; do { conflito = 0; for (int i = 0; i < N - 1; i++) { if (v[i + 1] < v[i]) { troca(v, i, i + 1); conflito = 1; } } } while (conflito == 1); } int main() { int serie = {4, 7, 1, 9, 2, 8, 3}; // exemplo (a) sort(serie, 7); return 1; } ``` **Exemplos**: ordenar as séries ### a) `{4, 7, 1, 9, 2, 8, 3}` ### b) `{1,-1,2,7,4,9,3,5,0}` | troca| do | for | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | ---- | --- | --- | ---- | ---- | --- | --- | --- | --- | --- | --- | --- | | 0 | 0 | - | 1 | -1 | 2 | 7 | 4 | 9 | 3 | 5 | 0 | | 1 | | 0 | [1] | [-1] | 2 | 7 | 4 | 9 | 3 | 5 | 0 | | | | | [-1] | [1] | 2 | 7 | 4 | 9 | 3 | 5 | 0 | | 2 | | 1 | -1 | 1 | 2 | [7] | [4] | 9 | 3 | 5 | 0 | | | | | -1 | 1 | 2 | [4] | [7] | 9 | 3 | 5 | 0 | | 3 | | 2 | -1 | 1 | 2 | 4 | 7 | [9] | [3] | 5 | 0 | | | | | -1 | 1 | 2 | 4 | 7 | [3] | [9] | 5 | 0 | | 4 | | 3 | -1 | 1 | 2 | 4 | 7 | 3 | [9] | [5] | 0 | | | | | -1 | 1 | 2 | 4 | 7 | 3 | [5] | [9] | 0 | | 5 | | 4 | -1 | 1 | 2 | 4 | 7 | 3 | 5 | [9] | [0] | | | | | -1 | 1 | 2 | 4 | 7 | 3 | 5 | [0] | [9] | | 6 | 1 | 0 | -1 | 1 | 2 | 4 | [7] | [3] | 5 | 0 | 9 | | | | | -1 | 1 | 2 | 4 | [3] | [7] | 5 | 0 | 9 | | 7 | | 1 | -1 | 1 | 2 | 4 | 3 | [7] | [5] | 0 | 9 | | | | | -1 | 1 | 2 | 4 | 3 | [5] | [7] | 0 | 9 | | 8 | | 2 | -1 | 1 | 2 | 4 | 3 | 5 | [7] | [0] | 9 | | | | | -1 | 1 | 2 | 4 | 3 | 5 | [0] | [7] | 9 | | 9 | 2 | 0 | -1 | 1 | 2 | [4] | [3] | 5 | 0 | 7 | 9 | | | | | -1 | 1 | 2 | [3] | [4] | 5 | 0 | 7 | 9 | | 10 | | 1 | -1 | 1 | 2 | 3 | 4 | [5] | [0] | 7 | 9 | | | | | -1 | 1 | 2 | 3 | 4 | [0] | [5] | 7 | 9 | | 11 | 3 | 0 | -1 | 1 | 2 | 3 | [4] | [0] | 5 | 7 | 9 | | | | | -1 | 1 | 2 | 3 | [0] | [4] | 5 | 7 | 9 | | 12 | 4 | 0 | -1 | 1 | 2 | [3] | [0] | 4 | 5 | 7 | 9 | | | | | -1 | 1 | 2 | [0] | [3] | 4 | 5 | 7 | 9 | | 13 | 5 | 0 | -1 | 1 | [2] | [0] | 3 | 4 | 5 | 7 | 9 | | | | | -1 | 1 | [0] | [2] | 3 | 4 | 5 | 7 | 9 | | 14 | 6 | 0 | -1 | [1] | [0] | 2 | 3 | 4 | 5 | 7 | 9 | | | | | -1 | [0] | [1] | 2 | 3 | 4 | 5 | 7 | 9 | | Last | 7 | 0 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 7 | 9 | ## conteúdo avaliação - tipo abstrato de dados - busca linear - busca binaria - analise de complexidade de algoritmos - algoritmo de orgenação por bolha (bubble sort)