Anda di halaman 1dari 4

Busca binria ou Linear

O mtodo de busca Linear que vimos na aula passada o mais adequado quando no se tem nenhuma informao a respeito da estrutura em que a busca ser realizada. Por outro lado, se o elemento procurado estiver entre os ltimos ou no estiver no conjunto, esse mtodo poder ser demasiadamente lento, pois ocorrero comparaes com todos os elementos de um conjunto que pode ser muito grande imagine a relao de clientes de um banco! Quando temos uma sequncia ordenada de elementos, existem outros mtodos de busca que so muito mais adequados, pois permitem realizar uma busca por meio de algoritmos mais eficientes, que podem utilizar um nmero menor de comparaes. Considere uma sequencia ordenada de elementos de qualquer tipo. Em vez de se comparar ao primeiro elemento, pode se compar-lo ao elemento do meio da sequncia, se o elemento comparado o desejado a busca termina, seno , pode-se verificar se o elemento desejado menor ou maior que o elemento encontrado. Como todos os elementos esto ordenados, essa comparao elimina a metade da sequncia onde o elemento no pode estar. Por exemplo se o elemento procurado for maior que o encontrado, a metade inferior da sequncia poder ser descartada para a prxima comparao. Esse mtodo conhecido como busca algortmica, binria ou logartmica. Para um conjunto de 15 elementos, o mtodo busca linear realizaria, no mnimo, uma comparao e, no mximo 15 comparaes. No caso de busca binria, no mnimo ocorreria uma comparao e no mximo quatro comparaes, o que geraria um ganho considervel, mais sensvel para conjuntos de elementos muito grandes. Suponha que o elemento a ser localizado seja o 329, que ser chamado de x. 500 178 2 487 158 47 35 78 329 215 19 25 214 38 77

1 Passo Ordenar o conjunto 2 19 25 35 38 47

77

78

158

178

214

215

329

487

500

Elemento procurado

Comparaes sucessivas so feitas entre O elemento que se procura e o elemento no meio da sequncia no pesquisada. Cada no sucesso da busca reduz a sequncia pela metade at que o elemento seja encontrado ou a sequncia no possa mais ser dividida.

Meio da sequncia pesquisada

2 passo dividir o conjunto ao meio: 2 19 25 35 38 47 77

78

158

178

214

215

329

487

500

3 passo: - Efetuar a comparao para verificar se o elemento procurado igual ao elemento central, que ser chamado de meio: X = meio Se o resultado for verdadeiro, a busca dever ser encerrada. Caso contrrio, sero executados os passos seguintes. No caso do nosso exemplo 329 = 78 falso. 4 passo: - Efetuar a comparao para verificar se o elemento procurado maior ou menor que o elemento central: 329 > 78 verdadeiro. 5 passo: - Proceder uma nova diviso do conjunto que atenda a condio do 4 passo, isto , se x for maior que meio, ser dividido o conjunto da direita, seno o conjunto da esquerda. No caso do exemplo, ser utilizado o da direita. 158 178 214 215 329 487 500

Repetir os passos 4 e 5 at que o elemento seja encontrado. 329 487 500

329

Algoritmo BuscaBinria:
VAR: Sequencia : vetor de elementos x, inicial, meio, fim : inteiros encontrou : lgica INICIO encontrou .f. LER (x) ENQUANTO(inicial <= final)FAA meio (inicial + final) / 2 SE x = (sequencia [meio]) Encontrou .v. <fim da busca> SENO SE (x < sequencia [meio]) final meio 1 SENO inicial meio + 1 FIM-SE FIM-SE FIM-ENQUANTO FIM

JAVA
class BuscaBinaria{ public static boolean binaria (int x, int n[]){ int inicio =0, fim = n.length-1; int meio; while (inicio <= fim){ meio = (inicio + fim) / 2; if (x == n[meio]) return true; if(x < n[meio]) fim = meio -1; else inicio = meio + 1; } return false } }

Exerccios 1. Crie uma matriz 4X4, chamada Mat4 e leia os valores para todos os elementos da Matriz e : a) Mostre essa matriz b) Calcule a soma dos elementos e mostre a soma c) Calcule e mostre a mdia dos elementos da matriz d) Mostre os elementos da diagonal principal e) Mostre os elementos da diagonal secundria f) Mostre os elementos da linha 3 g) Mostre os elementos da coluna 2 h) Calcule e mostre quantos elementos so nmeros maiores que a mdia i) Mostre em que posio se encontre o maior e menor elemento da matriz j) Crie uma segunda matriz 4x4 e armazene o contedo de cada elemento da Matriz1 multiplicado por 2 k) Mostre os elementos pares e impares da matriz, e dizer tambm quantos elementos so pares e quantos so impares l) Crie um vetor que armazene os elementos da 2 linha da matriz m) Ordene a matriz para ficar em ordem crescente e mostre esses elementos ordenados 2. Crie uma matriz com 10 nmeros inteiros que devero ser fornecidos pelo usurio e: a) Coloque os elementos na ordem crescente b) Coloque os elementos na ordem decrescente 3. Crie um vetor com nome e ordene-o.