Pular para o conteúdo

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.
João Carlos abreu Junior jcaj
Hits: 52.615 Categoria: C/C++ Subcategoria: Metodologias
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.


Figura 2 - Algoritmo de ordenação com otimização
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Introdução
   2. Algoritmos
   3. Otimização de Algoritmos
   4. Conclusão

Instalação do Slackware 11.0 sem medo

Guia de Programação em C/GTK 2 - Construindo uma Calculadora Completa

Tutorial SDL

Algoritmo... como fazer?

Dicas para aprender programação

Linguagem C - Listas Duplamente Encadeadas

#1 Comentário enviado por removido em 17/07/2006 - 16:18h
unrrun
#2 Comentário enviado por removido em 17/07/2006 - 20:03h
aaaaaaaaaffffffffffffffffffff!!!
#3 Comentário enviado por yusuke em 18/07/2006 - 09:08h
qual a nota que vcs tiraram por este "artigo" ?
#4 Comentário enviado por tobias_felipe em 18/07/2006 - 10:36h
Pô cara, 'cê mandou um trabalho de escola pro site? Não dava nem pra disfarçar um pouco?
#5 Comentário enviado por jcaj em 18/07/2006 - 10:39h
Caro tobias_felipe a intenção não era de disfarçar e sim passar o conhecimento que obtivemos fazendo o trabalho. Se você acha que trabalho escolar não é interessante ficar exposto aqui no site, de onde você acha que vem o avanço da tecnologia?
#6 Comentário enviado por Ragen em 18/07/2006 - 11:02h
jcaj,

O artigo é bastante didatico, mas muito superficial. Você poderia ter abordado questões mais práticas e aplicadas ao desenvolvimento real de softwares.

Por exemplo: abordado pre-processamento e pre-caching, praticas que se adaptam a quase qualquer tipo de problema.
#7 Comentário enviado por ulisses_castro em 18/07/2006 - 11:35h
O ministério da saúde adverte:

Fumar Maconha antes de mandar artigos causa edêma cerebral!

o.O

#8 Comentário enviado por removido em 18/07/2006 - 15:47h
Cadê o conteudo do artigo?

#9 Comentário enviado por edsonjbueno em 19/07/2006 - 02:08h
Quem ja sabe é facil criticar e colocar defeitos em vez de contribuir, mas tem muita gente que esta aprendendo, e ajuda bastante o artigo...
#10 Comentário enviado por htampieri em 04/08/2006 - 20:16h
a importancai de artigo nao é esclarecer todas as duvidas do leitor mas sim acrescentar conteudo ao seu intelectuo. nao vejo diferença em puplicar um artigo cientifico de faculdade pois a maioria deles são mesmo de faculdade. o que importa é conteudo.

Higor.
#11 Comentário enviado por ubuntuvitor em 17/09/2007 - 19:40h
Gente vamos com calma porque, o connhecimento se adquire com pequenas coisas, sei que o trabalho dos colegas esta superficial so que lembre-se sempre temos novos cadastro no site de pessoas que estão começando a programar. Por isso se ao é do seu interesse o material apenas agradeça a pessoa porque ele ao menos teve a boa vontade de ajudar.
" ninguem sabe tudo mas todos juntos sabem tudo"
Vitor Cloves
#12 Comentário enviado por vagnerpolles em 07/07/2009 - 11:50h
Acredito que todos os artigos na area de logica sao bem vindos, o processo de adquirir conhecimento e algo ciclico, comeca com pequenos passos.

Nos instigamos por algum assunto;
Aprendemos algo;
Aplicamos este conhecimento;
Temos novas interesses;
Nos instigamos por algo novo... e repetimos o processo inúmeras vezes.

Caro Joao Carlos, nao se deixe influenciar pelo negativismo e aprenda com todos os comentários.

O Sabio tem certeza apenas de uma coisa: Que ele nao sabe tudo!

Contribuir com comentário

Entre na sua conta para comentar.