searching data in arrays comp 242. linear search algoritmo: comenzando con el primer elemento, se...

17
Subjuntivo/ Indicativo/ Infinitivo

Upload: soledad-calleros

Post on 09-Jan-2015

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene

Searching data in Arrays

COMP 242

Page 2: Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene

Linear Search

Algoritmo: Comenzando con el primer elemento, se

compara cada uno con el valor a buscar y se detiene cuando el valor es hallado o se llega al final del arreglo.

Page 3: Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene

Linear Search

Programación en C++

Page 4: Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene

#include<iostream>using namespace std;// Function prototypeint busqueda(int[], int, int);const int SIZE = 5;

int main(){

int pruebas[SIZE] = {87, 75, 98, 100, 82};int resultados;//Buscar el valor 100 dentro del arregloresultados = busqueda(pruebas, SIZE, 100);// Si la funcion busqueda regresa el valor -1, no se hallo el valor 100if(resultados == -1)

cout << "Ud. no obtuvo 100 en ningun examen." << endl;else{

cout << "Ud. obtuvo 100 en la prueba #";cout << (resultados + 1) << endl;

}system("pause");return 0;

}int busqueda(int list[],int numElems, int value){

int index = 0;int position = -1;bool found = false; while (index < numElems && !found) {

if (list[index] == value) {

found = true; position = index;

} index++;

} return position;

}

Page 5: Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene
Page 6: Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene

Binary Search

Algoritmo mucho más eficiente que la búsqueda lineal.

Requiere que todos los valores en el arreglo esten previamente ordenados.

Comienza a realizar la búsqueda con el elemento central, si este contiene el valor buscado, se finaliza el proceso. De lo contrario, si el valor a buscar es menor que el valor central, la búsqueda se concentra en los valores en la primera mitad del arreglo. De otra manera, se concentra en la otra mitad.

Page 7: Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene

Binary Search

Programación en C++

Page 8: Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene

#include<iostream>using namespace std;//Function prototypeint binarySearch(int[], int, int);const int SIZE = 20;

int main(){

int idNums[SIZE] = {101, 142, 147, 189, 199, 207, 222, 234, 289, 296, 310, 319, 388, 394, 417, 429, 447, 521, 536, 600};int results;int empID;

cout << "Enter the Employee ID you wish to search for: ";cin >> empID;

results = binarySearch(idNums, SIZE, empID);if (results == -1)

cout << "That number does not exist in the array. " << endl;else{

cout << "That ID is found at element " << results;cout << " in the array. " << endl;

}system("pause");return 0;

}int binarySearch(int array[], int size, int value){

int first = 0, last = size -1, middle, position = -1;bool found = false;while (!found && first <= last){

middle = (first + last) / 2;if (array[middle] == value){

found = true;position = middle;

}else if (array[middle] > value)

last = middle - 1;else

first = middle + 1;}return position;

}

Page 9: Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene

Binary Search

Durante la ejecución del programa, entre como prueba el valor 199.

Una vez se entre este valor, el programa “llama” a la función binarySearch definida dentro del mismo para llevar a cabo la búsqueda del dato 199 dentro del arreglo.

Page 10: Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene

int binarySearch(int array[], int size, int value){

int first = 0, last = size -1, middle, position = -1;bool found = false;while (!found && first <= last){ middle = (first + last) / 2;

if (array[middle] == value){

found = true;position = middle;

}else if (array[middle] > value)

last = middle - 1;else

first = middle + 1;}return position;

}

Al ejecutarse las instrucciones dentro de esta función, el valor que retornará a la función principal será 4, lo que corresponde a la posición dentro del arreglo donde ubica el dato encontrado.

Page 11: Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene