You are on page 1of 12

Introduo aos Mtodos de Ordenao

Heider R. da Silva, Douglas M. S. Domingues


Universidade Regional integrada do Alto Uruguai e das Misses Campus Santiago
Avenida Batista Bonoto Sobrinho, 733 CEP 97610-000 Santiago RS - Brasil
{heider_rp, domingues.douglas}@hotmail.com

Resumo. Os mtodos de ordenao na computao so algoritmos que


ordenam dados em certa ordem a fim de resolver problemas, realizar
consultas, classificar e entre outras tarefas cotidianas em que seja preciso
colocar uma lista em ordem para facilitar a busca de informaes nela
contida. Existem diversos mtodos para ordenao, mas no presente trabalho
ser apresentado cinco destes.
Palavras-cheve. Mtodos de ordenao na computao, facilitar a busca de
informaes.
Abstract. The sorting methods in computing algorithms are ordering data in a
certain order to solve problems, perform queries, sort and among other
everyday tasks where you need to put a list in order to facilitate the search for
information contained therein. There are several methods for ranking, but in
this study five of these will be presented.
Keywords. Sorting methods in computing, to facilitate the search for
information.

1. Introduo
Existe atualmente a necessidade de armazenar informaes e posteriormente consultar
os dados, e o mais importante que armazenar e consultar informaes possui-las to
ordenadas quanto possvel seja por ordem alfabtica, por idade, localidade ou outro item
sobre o qual necessrio trabalhar.
Uma das formas mais utilizada para resolver este problema na computao a
ordenao interna, ou seja, ocorre quando todo arquivo a ser ordenado cabe na memria
principal de um dispositivo. As ordens mais usadas so as comparaes numricas e
lexicogrficas.
Segundo Nivio Ziviani et al. (2007) ,ordenar corresponde ao processo de
rearranjar um conjunto de objetos em ordem ascendente ou descendente. O objetivo
principal da ordenao facilitar a recuperao posterior de itens do conjunto ordenado.
A atividade de colocar as coisas em ordem est presente na maioria das aplicaes em
que os objetos armazenados tm de ser pesquisados e recuperados.
As tcnicas de ordenao permitem apresentar um conjunto amplo de algoritmos
distintos para resolver uma mesma tarefa. Dependendo da aplicao, cada algoritmo
considerado possui uma vantagem particular sobre os outros algoritmos.

No trabalho sero apresentados cinco destes mtodos de ordenao que esto


subdivididos entre mtodos simples e sofisticados.
Simples - Insertion Sort
Simples - Selection Sort
Simples - Bubble Sort
Sofisticado - Quick Sort
Sofisticado Merge Sort
Esse artigo traz uma introduo aos principais mtodos de ordenao utilizados,
e est estruturado da seguinte forma: A Seo 2 introduz ao conceito de comparaes
em uma ordenao. A Seo 3 descreve trs Mtodos Simples de ordenao. Na Seo 4
descreve dois Mtodos Sofisticados de ordenao. Por fim, a Seo 4 faz uma concluso
comparando vantagens e desvantagens entre os mtodos.

2. Problema da ordenao
Para que uma lista possa ser ordenada os seus elementos devem ser comparados
dois a dois. Isso significa que dados dois elementos da lista deve ser sempre possvel
determinar se eles so equivalentes ou se um deles menor que o outro. A ideia
associada ao termo menor depende do critrio de comparao utilizado.
Diz-se que uma lista est em ordem crescente se cada um de seus elementos
menor ou igual ao seu sucessor segundo algum critrio de comparao. Uma lista
somente pode ser colocada em ordem se seus elementos forem dois a dois comparveis
e compatveis. O problema da ordenao consiste em, uma dada lista, coloca-la em
ordem crescente ou decrescente, podendo ser feitas comparaes numricas, alfabticas
e tambm cronolgicas.
Comparao numrica: Um nmero x menor do que um nmero y se a
expresso x-y resulta em um nmero negativo. Esse o tipo mais comum de
comparao e, de certa forma, todos os demais critrios de comparao derivam
dele.
Comparao alfabtica: Um caractere menor do que outro se precede esse
outro na ordem alfabtica. Por exemplo, o caractere a precede o b, o b
precede o c e assim por diante. No computador, os caracteres so
representados atravs de nmeros. Dessa forma, a comparao entre caracteres
acaba sendo uma comparao entre os cdigos numricos e, portanto, uma
comparao numrica.
Comparao cronolgica: Uma data menor do que outra se ela antecede essa
outra. Uma data pode ser representada atravs de trs nmeros, um para
representar o ano, outro para o ms e outro para o dia. Ao comparar uma data
com outra, comparamos o ano. Em caso de empate, comparamos o ms. Em caso
de novo empate, comparamos o dia. Sendo assim, a comparao cronolgica
tambm feita comparando nmeros.

3. Mtodos Simples
So adequados para pequenos arquivos, sendo algoritmos pequenos e fceis de
implementar. Tais mtodos, considerados inferiores, so bastante simples, mas
introduzem ideias que servem de base para outros mtodos mais eficientes.
Esses mtodos utilizam como uma de suas operaes bsicas a comparao de
elementos da lista.
3.1. Insertion Sort
Eficiente para listas que esto quase em ordem. o mtodo que consiste em inserir
informaes num conjunto j ordenado. Seu Funcionamento similar ao da ordenao
das cartas de um baralho.
O Mtodo de Insero, tambm conhecido como Insero Direta, bastante
simples. Alm disso, ele extremamente eficiente para listas que j estejam
parcialmente ordenadas.
Nesse mtodo consideramos que a lista est dividida em parte esquerda, j
ordenada, e parte direita, em possvel desordem. Inicialmente, a parte esquerda contm
apenas o primeiro elemento da lista. Cada iterao consiste em inserir o primeiro
elemento da parte direita (piv) na posio adequada da parte esquerda, de modo que a
parte esquerda continue ordenada. fcil perceber que se a lista possui n elementos,
aps n-1 inseres ela estar ordenada.
Para inserir o piv percorremos a parte esquerda, da direita para a esquerda,
deslocando os elementos estritamente maiores que o piv uma posio para direita. O
piv deve ser colocado imediatamente esquerda do ltimo elemento movido.

Figura 1. Exemplo algoritmo de Insero.

Figura 2. Ilustrao do funcionamento do algoritmo por Insero.

Na figura a seguir exibimos o contedo de um vetor aps cada iterao do lao


mais externo do algoritmo de insero. A parte esquerda da lista aparece sombreada.

Figura 3. Exemplo de vetor aps ordenao por Insero.

3.2. Selection Sort


Tem como principio de funcionamento selecionar o menor ou maior item do vetor e a
seguir troc-lo pela primeira posio do vetor. Isto ocorre para os n - 1 elementos
restantes, depois com os n - 2 itens, at que reste apenas um elemento.
O mtodo de seleo tem como ponto forte de que ele realiza poucas operaes
de swap. Seu desempenho, em termos absolutos, costuma ser superior ao do Mtodo
Bolha, mas inferior ao do Mtodo de Insero.

Figura 4. Ilustrao do funcionamento do algoritmo de Seleo.

A colocao do item no seu lugar correto na sequncia ordenada, como


demonstra a Figura 4 realizada trocando o item de menor valor pela primeira posio
do vetor.
Assim como no mtodo de insero, nesse mtodo consideramos que a lista est
dividida em parte esquerda, j ordenada, e parte direita, em possvel desordem. Alm
disso, os elementos da parte esquerda so todos menores ou iguais aos elementos da
parte direita.
Cada iterao consiste em selecionar o menor elemento da parte direita (piv) e
troc-lo com o primeiro elemento da parte direita. Com isso, a parte esquerda aumenta,
pois passa a incluir o piv, e a parte direita diminui. Inicialmente, a parte esquerda
vazia. Se a lista possui n elementos, aps n 1 iteraes ela estar ordenada.

Figura 5. Exemplo algoritmo de Seleo.

O algoritmo constitudo de dois laos contados encaixados que realizam as


mesmas quantidades de iteraes. Dessa forma, se torna evidente que o algoritmo de
seleo realiza (n -n) / 2 comparaes.
A figura abaixo exibe o contedo de um vetor aps cada iterao do lao mais
externo do algoritmo de seleo. A parte esquerda da lista aparece sombreada.

Figura 6. Exemplo de vetor aps ordenao por Seleo.

3.3. Bubble Sort


o mtodo mais simples em termo de implementao, porm o menos eficiente. A
ideia principal do algoritmo percorrer o vetor n1 vezes, a cada passagem fazendo
flutuar para o inicio o menor elemento da sequncia. Seu uso no recomendado para
vetores com muitos elementos.

Figura 7. Ilustrao do funcionamento do algoritmo tipo Bolha.

Em cada iterao do mtodo, percorrida a lista a partir de seu inicio


comparando cada elemento com seu sucessor, trocando-os de posio se houver
necessidade. possvel mostrar que, se a lista tiver n elementos, aps no mximo (n-1)
iteraes a lista estar em ordem.

Figura 8. Exemplo algoritmo de tipo Bolha.

Na Figura 8 percebe-se que ao final da primeira iterao do primeiro lao do


algoritmo, o maior elemento da lista estar na ultima posio do vetor. Ao final da
segunda iterao, os dois maiores valores da lista estaro nas duas ultimas posies do
vetor L, em ordem crescente. Observa-se tambm que quando compararmos dois
elementos da lista, somente feito o swap se o antecessor for menor do que o sucessor,
pois foi tido o cuidado de utilizar uma desigualdade estrita na comparao. Como
consequncia, o algoritmo Bolha estvel.

Figura 9. Exemplo de vetor aps ordenao por algoritmo tipo Bolha.

Na Figura 9 percebe-se que no final da segunda iterao a lista j estava


ordenada. Nas prximas iteraes no houve nenhuma alterao na lista, mas a ideia
bsica percorrer o arquivo sequencialmente varias vezes. Cada passagem consiste em
comparar cada elemento no arquivo e o seu sucessor e trocar os dois elementos se no
estiverem na ordem certa.

4. Mtodos Sofisticados
So adequados para grandes arquivos, requerem poucas comparaes, sendo o problema
sua complexidade para se implementar.
4.1. Quick Sort
o algoritmo mais rpido que se conhece entre os de ordenao interna para uma ampla
variedade de situaes. Foi escrito em 1960 e publicado em 1962 por C. A. R. Hoare.
Adotando a estratgia Dividir para conquistar o funcionamento resume-se a dividir o
problema de ordenar um vetor de n posies em dois outros menores.

Figura 10. Ilustrao do funcionamento do algoritmo QuickSort.

Nesse mtodo, a lista dividida em parte esquerda e parte direita, sendo que os
elementos da parte esquerda so todos menores que os elementos da parte direita. Essa
fase do mtodo chamada de Partio.
Uma estratgia para fazer a Partio escolher um valor como piv e ento
colocar na parte esquerda os elementos menores ou iguais ao piv e na parte direita os
elementos maiores que o piv.
Utilizaremos como piv o primeiro elemento da lista. Nesse caso, o piv deve
ser colocado entre as duas partes. O procedimento Partio, que implanta tal estratgia,
descrito nas Figuras 11 e 12.

Figura 11. Partio.

Figura 12. Algoritmo de procedimento de Partio.

No procedimento Partio a varivel i avana at encontrar um elemento maior


do que o piv e a varivel j recua at encontrar um elemento menor ou igual ao piv.
feita ento a troca do elemento que est na posio i com o elemento que est na posio
j. Esse processo repetido at termos i > j. Para finalizar, o piv colocado entre as
duas partes fazendo troca (L[INICIO], L[j]). A posio devolvida ao chamador do
procedimento.

Figura 13. Exemplo algoritmo QuickSort.

Na figura acima, as duas partes so ordenadas recursivamente (usando o prprio


Quicksort). A lista estar ento ordenada.

4.2. Merge Sort


Esse mtodo, proposto por John Von Neumann em 1945, baseado numa estratgia de
resoluo de problemas conhecida no Mtodo QuickSort como diviso e conquista. Essa
tcnica consiste, basicamente, em decompor a instncia a ser resolvida em instncias
menores e do mesmo tipo, resolver tais instncias (em geral, recursivamente) e por fim
utilizar as solues parciais para obter uma soluo da instncia original.

Figura 14. Ilustrao do funcionamento do algoritmo MergeSort.

No MergeSort dividimos a lista em duas metades. Essas metades so ordenadas


recursivamente (usando o prprio MergeSort) e depois so intercaladas como
mostrado na Figura 15.
Na Figura 15 ser apresentado implementao do mtodo Merge responsvel
pela intercao do intervalo do vetor passado a ele. Tal procedimento a parte principal
do MergeSort e nele onde os elementos so movimentados para as posies
adequadas.

Figura 15. Algoritmo procedimento Merge.

Figura 16. Algoritmo MergeSort

5. Concluses
Foram apresentados cinco mtodos de ordenao interna mediante a
exemplificao dos algoritmos. A Seo 3 apresentou mtodos de ordenao simples o
insertionSort, SelectionSort e BubbleSort, j na Seo 4 foram apresentados dois
mtodos sofisticados o QuickSort e MergeSort.
No existe um mtodo de ordenao considerado universalmente superior a
todos os outros. necessrio analisar o problema e, com base nas caractersticas dos
dados, decidir qual o mtodo que melhor se aplica ele.
Aps a exemplificao desses mtodos atravs de seus algoritmos, agora sero
apresentadas algumas tabelas comparativas mostrando as vantagens e desvantagens
entre os mtodos mostrados neste trabalho.
Tabela 1. Vantagens e desvantagens do Mtodo Simples InsertSort

Vantagens

Desvantagens

- Fcil Implementao

- Nmero grande de movimentao

- Algoritmo Estvel

- Ordem de complexidade quadrtica

- O vetor j ordenado favorece a


ordenao

- Ineficiente quando o vetor est ordenado


inversamente;

Tabela 2. Vantagens e desvantagens do Mtodo Simples SelectionSort

Vantagens

Desvantagens

- Fcil Implementao

- O fato de o arquivo j estar ordenado no


influencia em nada

- Pequeno nmero de movimentaes

- Ordem de complexidade quadrtica

- Interessante para arquivos pequenos

- Algoritmo no estvel

Tabela 3. Vantagens e desvantagens do Mtodo Simples BubbleSort

Vantagens

Desvantagens

- Fcil Implementao

- O fato de o arquivo j estar ordenado no


influencia em nada

- Algoritmo Estvel

- Ordem de complexidade quadrtica

Tabela 4. Vantagens e desvantagens do Mtodo Sofisticado QuickSort

Vantagens

Desvantagens

- Extremamente Eficiente

- Implementao difcil

- Necessita apenas de uma pequena pilha


como memria extra

- No estvel

Tabela 5. Vantagens e desvantagens do Mtodo Simples MergeSort

Vantagens
- Passvel de ser transformado em estvel

Desvantagens
- Utiliza memria auxiliar

- Fcil Implementao

Referencias
Jnior, A. C. N. (2008) ALGORITMOS E ESTRUTURAS DE DADOS Mtodos de
ordenao Interna.. Disponvel em:
www.decom.ufop.br/menotti/aedI082/tps/tp3-sol1.pdf. Acessado em Julho de
2014.
Sales, G. V. (2013) Anlise de Desempenho de Algoritmos de Ordenao. Disponvel
em: http://pt.slideshare.net/gtsalles/artigo-paa-gustavo-de-carvalho-sales.
Acessado em Julho de 2014.
Oliveira, A. B. Mtodos de Ordenao Interna. Visual Book, So Paulo, 1st edition,
2002.

You might also like