Vous êtes sur la page 1sur 8

Diferencias fundamentales:

Secuencial Binaria
El vector debe estar ordenado. No requiere ningn requisito por parte del
vector.
Compara cada elemento del vector con el Divide el espacio ocupado por el vector en
que se desea encontrar. sucesivas mitades, hasta encontrar el
elemento deseado.
Se examina el primer vector partiendo del Se examina el vector partiendo desde el
primer elemento hasta llegar al ltimo. elemento central de la lista.
Consume excesivo tiempo en la localizacin Eficiente con relacin al tiempo, si el vector
del elemento designado, por ello es esta ordenado por ello, por ello es
recomendable para vectores de pocos recomendable para conjunto de grandes
datos. datos.
Ventajas y desventajas:
Secuencial Binaria
Consumo excesivo de tiempo en la No es necesario que el vector este
localizacin del elemento a encontrar si el ordenado.
vector contiene grandes cantidades de
elementos, ya que recorre todo el vector.
No es factible para vectores con grandes Divide el espacio ocupado por el vector en
nmeros de elementos. sucesivas mitades, hasta encontrar el
elemento buscado.
Recorre todo el vector, desde el primero Se examina primero el elemento central de
hasta el ltimo elemento. la lista o sublista.
Es necesario que el vector este ordenado. Factible para vectores con grandes
cantidades de elementos.

Conclusin.
Los diagramas de flujo son importantes ya que ayudan al usuario a entender el
procedimiento y muestra el sistema como una red de procesos conectados entre si, por las
llamadas tuberas y depsitos de datos que describe sus movimientos a travs del
sistema, a su vez, es importante destacar que no es indispensables usar un tipo especial
de smbolos para crear diagramas, pero existen algunos ampliamente utilizados, por lo
que es adecuado conocerlos y utilizarlos, ampliando as las posibilidades de
crear flujograma mas claro y compresible como proceso lgico y con opciones mltiples o
adecuadas.
Los mtodo usuales de bsqueda son: bsqueda secuencial o lineal, el cual consiste en
comparar cada elemento del vector con el valor deseado hasta que se encuentra o termine
de leer el vector completo, aunque este puede ser un mtodo adecuado para pocos datos,
se necesita una tcnica mas eficaz para conjuntos grandes de datos, en este caso, se
utilizara la bsqueda binaria, que consiste en examinar primero el elemento central de la
lista si este es el elemento buscado, entonces, la bsqueda a terminado, en caso contrario
se repite el proceso.
De acuerdo y debido a lo antes mencionado se hace relevante las ventajas y desventajas
dentro de cada uno de los procesos, presentndose diferencias dentro de los mismos
debido a la eficacia de cada mtodo.
El mtodo de ordenacin por burbuja es muy sencillo ya que esta basado en ordenar los
elementos de una lista con la siguiente, intercambindolos de posicin si estn en orden
equivocado como si fueran burbujas, conocido tambin como el mtodo de intercambio
directo.

Datos de entrada:

vec: vector en el que se desea buscar el dato

tam: tamao del vector. Los subndices vlidos van desde 0 hasta tam-1 inclusive.

dato: elemento que se quiere buscar.

Variables

pos: posicin actual en el arreglo

pos = 0

Mientras pos < tam:

Si vec[pos] == dato devolver verdadero y/o pos, de lo contrario:

pos = pos + 1

Fin (Mientras)
Devolver falso,

int busquedaSimple(int vector[n], int n, int dato) {

int i;

for(i=0; i<n; i++){


if(dato==vector[i]) {
return i;
}
}

return -1;

Bsqueda dicotmica (binaria)[editar]


Se utiliza cuando el vector en el que queremos determinar la existencia de un elemento est previamente ordenado. Este algoritmo reduce el
tiempo de bsqueda considerablemente, ya que disminuye exponencialmente el nmero de iteraciones necesarias.

Est altamente recomendado para buscar en arrays de gran tamao. Por ejemplo, en uno conteniendo 50.000.000 elementos, realiza como
mximo 26 comparaciones (en el peor de los casos).

Para implementar este algoritmo se compara el elemento a buscar con un elemento cualquiera del array (normalmente el elemento central): si el
valor de ste es mayor que el del elemento buscado se repite el procedimiento en la parte del array que va desde el inicio de ste hasta el
elemento tomado, en caso contrario se toma la parte del array que va desde el elemento tomado hasta el final. De esta manera obtenemos
intervalos cada vez ms pequeos, hasta que se obtenga un intervalo indivisible. Si el elemento no se encuentra dentro de este ltimo entonces
se deduce que el elemento buscado no se encuentra en todo el array.

A continuacin se presenta el pseudocdigo del algoritmo, tomando como elemento inicial el elemento central del array.

Datos de entrada:

vec: vector en el que se desea buscar el dato

tam: tamao del vector. Los subndices vlidos van desde 0 hasta tam-1 inclusive.

dato: elemento que se quiere buscar.

Variables

centro: subndice central del intervalo

inf: lmite inferior del intervalo

sup: lmite superior del intervalo

inf = 0

sup = tam-1
Mientras inf <= sup:

centro = ((sup - inf) / 2) + inf // Divisin entera: se trunca la fraccin

Si vec[centro] == dato devolver verdadero y/o pos, de lo contrario:

Si dato < vec[centro] entonces:

sup = centro - 1

En caso contrario:

inf = centro + 1

Fin (Mientras)

Devolver Falso

int busquedaBinaria(int vector[], int n, int dato)


{
int centro,inf=0,sup=n-1;

while(inf<=sup){
centro=(sup+inf)/2;
if(vector[centro]==dato) return centro;
else if(dato < vector [centro] ){
sup=centro-1;
}
else {
inf=centro+1;
}
}
return -1;
}
Implementacin recursiva en C++ [cita requerida]

C++

#include <iostream>
#include <vector>

bool busqueda_dicotomica(const vector<int> &v, int principio, int fin, int &x){
bool res;
if(principio <= fin){
int m = (principio + fin)/2;
if(x < v[m]) res = busqueda_dicotomica(v, principio, m-1, x);
else if(x > v[m]) res = busqueda_dicotomica(v, m+1, fin, x);
else res = true;
}else res = false;
return res;
}
/*{Post: Si se encuentra devuelve true, sino false}*/
Implementacin recursiva en Python

Python
def busquedaBinaria (numeros, inicio, fin, elemento):
if (inicio == fin): return numeros [inicio] == elemento

centro = (inicio + fin) // 2

if (elemento < numeros [centro]):


return busquedaBinaria (numeros, inicio, centro, elemento)

elif (elemento > numeros [centro]):


return busquedaBinaria (numeros, centro + 1, fin, elemento)

else: return True

def busqueda (numeros, elemento):


if (numeros == None) or (numeros == []):
return False

else: return busquedaBinaria (numeros, 0, len (numeros) - 1, elemento)

Vous aimerez peut-être aussi