FACENS – Engenharia da Computação Lógica Computacional II Funções de Agregação e Ordenação Algoritmos Clássicos de Agregação • Frequentemente é necessário consolidar um conjunto de dados, extraindo alguma informação relevante • As funções de agregação mais utilizadas — — — — — Contador Soma, Média Máximo, Mínimo Procurar Mediana, Desvio Padrão e Variância Função Soma (vetor de inteiros) numérico soma (numérico v[], numérico n) i, s: numérico inicio s 0 para i 0 até n-1 passo 1 faça s s + v[i] fim para retorno s fim Função Média (vetor de inteiros) numérico media (numérico v[], numérico n) i, s: numérico inicio se (n = 0) retorno 0 s 0 para i 0 até n-1 passo 1 faça s s + v[i] fim para retorno s / n fim Função Máximo (vetor de inteiros) numérico maximo (numérico v[], numérico n) i, maximo: numérico inicio se (n = 0) retorno 0 maximo 0 para i 1 até n-1 passo 1 faça se (v[i] > v[maximo]) maximo i fim se fim para retorno maximo fim Função Mínimo (vetor de inteiros) numérico minimo (numérico v[], numérico n) i, minimo: numérico inicio se (n = 0) retorno 0 minimo 0 para i 1 até n-1 passo 1 faça se (v[i] < v[minimo]) minimo i fim se fim para retorno minimo fim Função Pesquisa (vetor de inteiros) numérico pesquisa (numérico alvo, numérico v[], numérico n) i: numérico inicio para i 0 até n-1 passo 1 faça se (v[i] = alvo) retorno i fim se fim para retorno -1 fim Ordenação • Diversos métodos, alguns muito eficientes e outros pouco eficientes • BOLHA: — A cada passo, cada elemento é comparado com o próximo. Se o elemento estiver fora de ordem, a troca é realizada — Realizam-se tantos passos quantos necessários até que não ocorram mais trocas • SELEÇÃO: — A cada passo encontra-se o maior elemento dentro do segmento com os elementos não selecionados — Troca-se este elemento com o último elemento do segmento — Atualiza-se o tamanho do segmento (menos um elemento) — Este processo é repetido até que o segmento fique com apenas um elemento Método BOLHA (Bubble Sort) ordena (numérico v[], numérico n) i, temp: numérico troca: lógico inicio troca = VERDADEIRO enquanto (troca) faça troca = FALSO para i = 0 até n-2 faça se (v[i] > v[i + 1]) então temp = v[i] v[i] = v[i + 1] v[i + 1] = temp troca = VERDADEIRO fim se fim para fim enquanto fim Método Seleção Direta ordena (numérico v[], numérico n) pos_maior, temp: numérico inicio para i = n-1 até 1 faça pos_maior = maximo(v, i+1) temp = v[i] v[i] = v[pos_maior] v[pos_maior] = temp fim para fim