Você está na página 1de 2

2.

Algoritmos de busca e ordenação;


A busca é o processo em que se determina se um elemento é membro ou não de um
determinado espaço.
Busca é um método bastante utilizado em programação, pois frequentemente
necessitamos de informações que podem ser adquiridas através dela. Pode-se realizar
busca em diversos lugares como: vetores, string, intervalos numéricos.
A forma mais simples de se consultar um vetor em busca de um item particular é, a partir
do seu início, ir examinando cada um de seus itens até que o item desejado seja
encontrado ou então que seu final seja atingido. Esse é o método de busca linear.
A vantagem da busca linear é que ela sempre funciona, independentemente de o vetor
estar ou não ordenado. A desvantagem é que ela é geralmente muito lenta; pois, para
encontrar um determinado item x, a busca linear precisa examinar todos os itens que
precedem x no vetor.
Se não sabemos nada a respeito da ordem em que os itens aparecem no vetor, o melhor
que podemos fazer é uma busca linear. Entretanto, se os itens aparecem ordenados5,
podemos usar um método de busca muito mais eficiente, a busca binaria.
Esse método é semelhante àquele que usamos quando procuramos uma palavra num
dicionário: primeiro abrimos o dicionário numa página aproximadamente no meio; se
tivermos sorte de encontrar a palavra nessa página, ótimo; senão, verificamos se a palavra
procurada ocorre antes ou depois da página em que abrimos e então continuamos, mais
ou menos do mesmo jeito, procurando a palavra na primeira ou na segunda metade do
dicionário.
Como a cada comparação realizada o espaço de busca reduz-se aproximadamente à
metade, esse método é denominado busca binária. A desvantagem é que precisa q o vetor
esteja ordenado, embora mostre eficiência com vetores grandes.
A ordenação consiste em dispor elementos em uma certa sequência, seguindo algum
critério. Por exemplo, a ordenação lexicográfica (alfabética) para dados literais, ou
crescente e decrescente para dados numéricos.
A ordenação tem como objetivo facilitar as buscas e pesquisas de ocorrências de
determinado elemento em um conjunto ordenado.
Existe diferentes métodos de rodenação ou algoritmos de ordenaçãp, métodos simples
para pequenos problemas, e são mais fáceis de entender, como: Bubble Sort, Insertion
Sort, Selection Sort.
BubbleSort:Talvez a estratégia mais simples para ordenar um vetor seja comparar pares
de itens consecutivos e permutá-los, caso estejam fora de ordem. À medida em que o
vetor vai sendo processado, cada número vai sendo deslocado para a direita, até que seja
encontrado outro maior. Evidentemente, no final do processo, um valor máximo estará na
última posição do vetor.
Se considerarmos os números maiores como mais pesados e os menores como mais leves,
veremos que, durante a ordenação por esse método, os números mais pesados "descem"
rapidamente para o "fundo" do vetor, enquanto que os números mais leves "sobem"
lentamente para a "superfície".
É um método pouco eficiente, embora seja fácil de entender e implementar.
Insertion Sort ou ordenação por inserção é o método que percorre um vetor de elementos
da esquerda para a direita e à medida que avança vai ordenando os elementos à esquerda.
O funcionamento do algoritmo é bem simples: consiste em cada passo a partir do segundo
elemento selecionar o próximo item da sequência e colocá-lo no local apropriado de
acordo com o critério de ordenação.
A ordenação por seleção ou selection sort consiste em selecionar o menor item e colocar
na primeira posição, selecionar o segundo menor item e colocar na segunda posição,
segue estes passos até que reste um único elemento.
Encontra o menor elemento e permuta com aquele que ocupa sua posição no vetor
ordenado.
Existem métodos mais eficientes, são mais complexos, e requer maior niumero de
compartação. Projetados para trabalhar com grande quantidade de dados, como exemplos:
quicksort, mergesort.
O quicksort é um algoritmo de comparação que emprega a estratégia de “divisão e
conquista”. A ideia básica é dividir o problema de ordenar um conjunto com n itens em
dois problemas menores. Os problemas menores são ordenados independentemente e os
resultados são combinados para produzir a solução final.
algoritmo pode ser resumida na seguinte estratégia: divide sua lista de entrada em duas
sub-listas a partir de um pivô, para em seguida realizar o mesmo procedimento nas duas
listas menores até uma lista unitária.
Funcionamento do algoritmo: Escolhe um elemento da lista chamado pivô. Em seguida,
reorganiza a lista de forma que os elementos menores que o pivô fiquem de um lado, e os
maiores fiquem de outro. Esta operação é chamada de “particionamento”. Depois,
recursivamente ordena a sub-lista.
Esse algoritmo divide o problema em pedaços menores, resolve cada pedaço e depois
junta (merge) os resultados. O vetor será dividido em duas partes iguais, que serão cada
uma divididas em duas partes, e assim até ficar um ou dois elementos cuja ordenação é
trivial.
Para juntar as partes ordenadas os dois elementos de cada parte são separados e o menor
deles é selecionado e retirado de sua parte. Em seguida os menores entre os restantes são
comparados e assim se prossegue até juntar as partes.
Existem alguns outros métodos também eficientes para ordenação, como: shellsort,
timsort, radixsort, etc.

Você também pode gostar