Otimização de algoritmos
Este artigo foi desenvolvido juntamente com os colegas da faculdade: Bruno Alisson, Higor Vinicius, Jean Silvestre. Ele pretende mostrar a importância da otimização de algoritmos e a definição de algoritmo e de otimização.
Parte 3: Otimização de Algoritmos
Segundo BENNATON (2006:1): "Otimizar é melhorar até onde pudermos. No ideal, melhorar até o máximo. Até aquela situação ideal na qual, como vulgarmente se diz, se mexer mais, piora".
Otimizar então é melhorar, essa melhora é uma mudança de um processo que resulta em um ganho. Otimizar algoritmos é efetuar essa melhora em algum algoritmo pronto para resolução de um determinado problema, mas que ainda pode ser alterado para efetuar a resolução da melhor maneira possível ou encontrada, visto que para selecionar a melhor maneira dependemos de termos escolhas e critérios. Abaixo serão apresentados dois algoritmos um sem nenhuma otimização para resolver o problema de ordenação de uma matriz utilizando o método bolha e o segundo corresponde a otimização do mesmo.
O primeiro algoritmo chama a função bolha passando a quantidade de elementos (n) e a matriz (v) que se deseja ordenar de ordem crescente. Então esta função utiliza duas estruturas de repetição. A primeira estrutura percorre da posição n-1 até 1, decrementando a variável i, onde i recebe n-1 no começo da repetição. Enquanto que a segunda em conjunto com a primeira estrutura de repetição percorre 1 até i, verificando se a posição atual é maior do que a próxima, caso positivo será efetuado a troca. Na figura 1 abaixo, é apresentado o algoritmo em questão.
Otimizar então é melhorar, essa melhora é uma mudança de um processo que resulta em um ganho. Otimizar algoritmos é efetuar essa melhora em algum algoritmo pronto para resolução de um determinado problema, mas que ainda pode ser alterado para efetuar a resolução da melhor maneira possível ou encontrada, visto que para selecionar a melhor maneira dependemos de termos escolhas e critérios. Abaixo serão apresentados dois algoritmos um sem nenhuma otimização para resolver o problema de ordenação de uma matriz utilizando o método bolha e o segundo corresponde a otimização do mesmo.
O primeiro algoritmo chama a função bolha passando a quantidade de elementos (n) e a matriz (v) que se deseja ordenar de ordem crescente. Então esta função utiliza duas estruturas de repetição. A primeira estrutura percorre da posição n-1 até 1, decrementando a variável i, onde i recebe n-1 no começo da repetição. Enquanto que a segunda em conjunto com a primeira estrutura de repetição percorre 1 até i, verificando se a posição atual é maior do que a próxima, caso positivo será efetuado a troca. Na figura 1 abaixo, é apresentado o algoritmo em questão.

Figura 2 - Algoritmo de ordenação sem otimização
O segundo algoritmo é uma implementação otimizada do primeiro. O processo de ordenação é o mesmo, porém o segundo algoritmo possui uma variável que diz se ocorreu uma troca dentro do repita interno, caso não tenha ocorrida nenhuma troca o função retorna, pois o vetor já esta ordenado. Na figura 2 abaixo, tem-se a visualização do algoritmo.