Boa tarde! Show Preciso de uma ajudinha de vocês. É o seguinte, o algoritmo abaixo para cada método que está comentado deveria me retornar o número de comparações que o algoritmo faz para ordenar os números em cada um dos métodos de ordenação. Problemas s�o quest�es propostas em busca de uma soluç�o. Com o prop�sito de conceder uma soluç�o para certo problema, existem os algoritmos, cada problema que � decid�vel possui um algoritmo que determina uma soluç�o para cada inst�ncia desse problema. Algoritmos descrevem passo a passo os procedimentos para chegar a uma soluç�o de um problema e podem ser representados de tr�s formas:
Um tipo de algoritmo muito usado na resoluç�o de problemas computacionais s�o os algoritmos de ordenaç�o, que servem para ordenar/organizar uma lista de n�meros ou palavras de acordo com a sua necessidade. As linguagens de programaç�o j� possuem m�todos de ordenaç�o, mas � bom saber como funcionam os algoritmos, pois h� casos de problemas em que o algoritmo de ordenaç�o gen�rico n�o resolve, �s vezes � necess�rio modific�-lo. Os mais populares algoritmos de ordenaç�o s�o: Insertion sort, Selection sort, Bubble sort, Comb sort, Quick sort, Merge sort, Heap sort e Shell sort. Neste artigo ser�o estudados os algoritmos Bubble sort, Selection Sort, Quick sort e o Insertion sort, explicando o funcionamento de cada um deles. Definiç�o de AlgoritmosO Algoritmo � um esquema de resoluç�o de um problema. Pode ser implementado com qualquer sequ�ncia de valores ou objetos que tenham uma l�gica infinita (por exemplo, a l�ngua portuguesa, a linguagem Pascal, a linguagem C, uma sequ�ncia num�rica, um conjunto de objetos tais como l�pis e borracha), ou seja, qualquer coisa que possa fornecer uma sequ�ncia l�gica. Podemos ilustrar um algoritmo pelo exemplo de uma receita culin�ria, embora muitos algoritmos sejam mais complexos. Um Algoritmo mostra passo a passo os procedimentos necess�rios para resoluç�o de um problema. Descriç�o NarrativaA descriç�o narrativa � o uso da sua l�ngua nativa para descriç�o dos passos para se resolver um problema. A vantagem dessa forma de representaç�o � que qualquer um pode faz�-la sem ter conhecimentos avançados. A desvantagem � que n�o h� um padr�o, cada pessoa pode escrever como quiser. Outra desvantagem � a imprecis�o, ou seja, a descriç�o pode n�o ficar clara e pode-se tirar v�rias interpretaç�es diferentes de um mesmo algoritmo. Abaixo temos um exemplo de algoritmo usando a descriç�o narrativa:
In�cio Passo 1: Obter os valores de n1,n2,n3; Passo 2: Somar os valores do passo 1; Passo 3: Dividir o resultado obtido no Passo 2 por 3; Passo 4: Se o resultado do Passo 3 for maior ou igual a 6 ent�o escreva �Parab�ns voc� foi aprovado�, sen�o, escreva �Infelizmente voc� ficou de exame� e v� para o fim do programa Fim FluxogramaO fluxograma passou a ser usado para eliminar ambiguidades dos algoritmos. S�o s�mbolos gr�ficos padronizados, cada um representado por uma forma geom�trica que implica em uma aç�o, instruç�o ou um comando distinto. Esta forma � intermedi�ria a descriç�o narrativa e ao pseudoc�digo, pois � mais precisa do que a primeira, por�m, n�o se preocupa com detalhes de implementaç�o do programa, como os tipos das vari�veis usadas. Figura 1. Algor�timo �Calcular M�dia� em representaç�o de fluxograma.Linguagem Algoritma (Pseudoc�digo ou Portugol)Essa forma de representaç�o surgiu para tentar suprir as defici�ncias das outras representaç�es. Consiste na definiç�o de uma pseudolinguagem de programaç�o, cujos comandos s�o em portugu�s, mas que j� lembram um pouco a estrutura de uma linguagem de programaç�o estruturada, ou seja, a pseudolinguagem se assemelha muito ao modo como os programas s�o escritos. Isso vai permitir que os algoritmos sejam traduzidos, quase que diretamente, para uma linguagem de programaç�o.
algoritmo �CalcularMedia� var n1,n2,n3,media :real; inicio leia(n1,n2,n3); media← (n1+n2+n3)/3; se media>=6 entao escreva(�Parab�ns voc� foi aprovado�); sen�o escreva(�Infelizmente voc� ficou de exame�); Fimse fimalgoritmo Algoritmos de Ordenaç�oAlgoritmo de ordenaç�o, em ci�ncia da computaç�o, � um algoritmo que coloca os elementos de uma dada sequ�ncia em uma certa ordem. Em outras palavras efetua sua ordenaç�o completa ou parcial. O objetivo da ordenaç�o � facilitar a recuperaç�o dos dados de uma lista. Para este artigo foram escolhidos alguns algoritmos de ordenaç�o para serem estudados que s�o: Bubble Sort, Selection Sort, Quick Sort e Insertion Sort. Bubble SortBubble sort � o algoritmo mais simples, mas o menos eficientes. Neste algoritmo cada elemento da posiç�o i ser� comparado com o elemento da posiç�o i + 1, ou seja, um elemento da posiç�o 2 ser� comparado com o elemento da posiç�o 3. Caso o elemento da posiç�o 2 for maior que o da posiç�o 3, eles trocam de lugar e assim sucessivamente. Por causa dessa forma de execuç�o, o vetor ter� que ser percorrido quantas vezes que for necess�ria, tornando o algoritmo ineficiente para listas muito grandes. Figura 2. Esquema de funcionamento do Buble Sort.
Selection SortEste algoritmo � baseado em se passar sempre o menor valor do vetor para a primeira posiç�o (ou o maior dependendo da ordem requerida), depois o segundo menor valor para a segunda posiç�o e assim sucessivamente, at� os �ltimos dois elementos. Neste algoritmo de ordenaç�o � escolhido um n�mero a partir do primeiro, este n�mero escolhido � comparado com os n�meros a partir da sua direita, quando encontrado um n�mero menor, o n�mero escolhido ocupa a posiç�o do menor n�mero encontrado. Este n�mero encontrado ser� o pr�ximo n�mero escolhido, caso n�o for encontrado nenhum n�mero menor que este escolhido, ele � colocado na posiç�o do primeiro n�mero escolhido, e o pr�ximo n�mero � sua direita vai ser o escolhido para fazer as comparaç�es. � repetido esse processo at� que a lista esteja ordenada. Figura 3. Esquema de funcionamento do Selection Sort.
Insertion sortO Insertion sort � um algoritmo simples e eficiente quando aplicado em pequenas listas. Neste algoritmo a lista � percorrida da esquerda para a direita, � medida que avança vai deixando os elementos mais � esquerda ordenados. O algoritmo funciona da mesma forma que as pessoas usam para ordenar cartas em um jogo de baralho como o p�quer. Figura 4. Esquema de funcionamento do Insertion Sort.
O mesmo processo de comparaç�o acontece com o n�mero 1, ap�s esse processo o vetor fica ordenado. Quick sortO Quicksort � o algoritmo mais eficiente na ordenaç�o por comparaç�o. Nele se escolhe um elemento chamado de piv�, a partir disto � organizada a lista para que todos os n�meros anteriores a ele sejam menores que ele, e todos os n�meros posteriores a ele sejam maiores que ele. Ao final desse processo o n�mero piv� j� est� em sua posiç�o final. Os dois grupos desordenados recursivamente sofreram o mesmo processo at� que a lista esteja ordenada. Figura 5. Esquema de funcionamento do Quick Sort.
Estudo de casoPara realizaç�o pr�tica deste artigo, foram feito testes com os algoritmos estudados, os testes foram os seguintes: Verificar o comportamento dos algoritmos em relaç�o ao tempo, movimentaç�es de trocas e comparaç�es. Foram testadas 3 ordens de listas com 3 tamanhos diferentes cada:
Os resultados foram o seguintes: Ordem 1
Ordem 2
Ordem 3
Conclus�oCom base nos testes realizados foram obtidas as seguintes conclus�es: Bubble sort Para listas j� ordenadas em ordem crescente � o �nico algoritmo que n�o realiza movimentaç�es, mas em compensaç�o � o que tem o maior tempo e o maior n�mero de comparaç�es. N�o s� em listas j� ordenadas, mas em todos os casos o bubble sort se mostrou um algoritmo ineficiente. Selection sort Nas listas de ordem 1 e ordem 3, o selection sort foi o segundo pior algoritmo, mas se mostrou mais eficiente do que o Insertion sort em relaç�o ao tempo e a quantidade de movimentaç�es na lista de ordem 2. Insertion Sort Na lista de ordem 1, o Insertion sort se mostrou mais eficiente que todos os outros algoritmos em relaç�o ao tempo e comparaç�es. Na lista de ordem 2 foi menos eficiente do que o selection sort e na lista de ordem 3 a diferença de tempo entre o insertion e o selection foi pequena. Quick Sort O quick sort certamente � o algoritmo mais eficiente em listas totalmente desordenadas, ele se torna muito eficiente em relaç�o aos outros no quesito de tempo. Na lista de ordem 3 e na de ordem 2 a diferença de tempo do quick sort em comparaç�o aos outros foi absurdamente grande. Refer�ncias bibliogr�ficas
|