-
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 Desvantagens
- Passvel de ser transformado em estvel - 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.