Metodos de Ordenamiento-Buscar

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 21

Métodos de

ordenamiento
Métodos de ordenamiento

Métodos de búsqueda
La búsqueda es el proceso algorítmico de encontrar un ítem particular
en una colección de ítems. Una búsqueda normalmente devuelve True o
False según el ítem esté o no presente, respectivamente. En ocasiones,
el algoritmo se puede modificar para devolver la posición donde se
encuentre el ítem.
Métodos de ordenamiento

Búsqueda lineal
Métodos de ordenamiento

Búsqueda
Si programamos la búsqueda usando operaciones más elementales, y no
las grandes primitivas in e index(). Esto nos permitirá estudiar una
solución que puede portarse a otros lenguajes que no tienen
instrucciones tan poderosas.

Dada una lista xn y un valor x devolver el índice de x en xn si x está


en xn, y −1 si x no está en xn.

Este es uno de los problemas más clásicos de la computación, "El


Problema de la Búsqueda".
Métodos de ordenamiento

Búsqueda
Con mucha frecuencia los programadores trabajamos con grandes
cantidades de datos almacenados en una lista o en cualquier estructura
de datos, y por ello será necesario determinar si una lista contiene un
valor que coincida con un cierto valor clave, para saber si un valor se
encuentra dentro de una determinada lista o vector (depende de ti como
quieras llamarlo), se hace uso de los Algoritmos de Búsqueda, los cuales
nos permiten encontrar un determinada valor dentro de una estructura
de datos: por ejemplo, ubicar el registro correspondiente a cierta
persona en una base de datos.
Métodos de ordenamiento

Búsqueda lineal o secuencial


Las listas donde nos vemos obligados a buscar suelen ser gigantescas, y
esto puede afectar al rendimiento incluso en ordenadores rápidos. En
este caso, contar con una ordenación adecuada y un buen algoritmo de
búsqueda sería la solución óptima al problema. Mientras que la
ordenación trata sobre poner una lista de valores en orden, la búsqueda
es el proceso de encontrar la posición de un valor dentro de una lista.

El algoritmo de búsqueda lineal es un algoritmo simple, donde cada


elemento de la lista (empezando por el primer elemento) es investigado
hasta que es encontrado el elemento requerido, o se ha alcanzado el
final de la lista.
Métodos de ordenamiento

Búsqueda lineal o secuencial


Diseñamos una solución: Podemos comparar uno a uno los elementos de
la lista con el valor de x, y retornar el valor de la posición donde lo
encontramos en caso de encontrarlo. Si llegamos al final de la lista sin
haber salido antes de la función es porque el valor de x no está en la
lista, y en ese caso retornamos −1. En esta solución necesitamos una
variable i que cuente en cada momento en qué posición de la lista
estamos parados. Esta variable se inicializa en 0 antes de entrar en el
ciclo y se incrementa en 1 en cada paso.
Métodos de ordenamiento

Búsqueda lineal o secuencial


Métodos de ordenamiento

Búsqueda lineal o secuencial


Métodos de ordenamiento

Búsqueda lineal o secuencial


Si el valor no está en la lista se recorrerá la lista entera, haciendo una
comparación por elemento. Es decir que si el valor está en la posición p
de la lista se hacen p comparaciones, y si el valor no está se hacen tantas
comparaciones como elementos tenga la lista. Si la lista crece, la
cantidad de comparaciones para encontrar un valor arbitrario crecerá en
forma proporcional al tamaño de la lista. Este algoritmo tiene un
comportamiento proporcional a la longitud de la lista involucrada, o que
es un algoritmo lineal.
Métodos de ordenamiento

Búsqueda binaria o dicotómica


En este caso, este tipo de búsqueda es usado en listas que estén
previamente ordenadas, ya que su método de búsqueda es la de dividir
los datos en dos grupos, eligiendo el grupo en el cual debería estar el
dato buscado (supone que está ordenado alfabéticamente o
numericamente), volviendo a aplicar la división, y así sucesivamente
hasta verificar si existe o no existe el dato buscado.
Métodos de ordenamiento

Búsqueda binaria o dicotómica


Para implementar este algoritmo se compara el elemento a buscar con
un elemento cualquiera del vector (normalmente el elemento central): si
el valor de éste es mayor que el del elemento buscado se repite el
procedimiento en la parte del vector que va desde el inicio de éste hasta
el elemento tomado, en caso contrario se toma la parte del vector que
va desde el elemento tomado hasta el final. De esta manera obtenemos
intervalos cada vez más pequeños, 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
vector.
Métodos de ordenamiento

Búsqueda
binaria o
dicotómica
Búsqueda
binaria o
dicotómica
Métodos de ordenamiento

Búsqueda binaria o dicotómica


https://runestone.academy/runestone/static/pythoned/SortSearch/LaB
usquedaSecuencial.html

https://runestone.academy/runestone/static/pythoned/SortSearch/LaB
usquedaBinaria.html
Métodos de ordenamiento

Ejercicio 1
Escribir una función que reciba una lista desordenada y un elemento,
que:

• Busque todos los elementos coincidan con el pasado por parámetro y


devuelva la cantidad de coincidencias encontradas.
• Busque la primera coincidencia del elemento en la lista y devuelva su
posición.
• Utilizando la función anterior, busque todos los elementos coincidan
con el pasado por parámetro y devuelva una lista con las posiciones.
Métodos de ordenamiento

Ejercicio 2
Escribir una función que reciba una lista de números no ordenada.

• Devuelva el valor máximo.


• Devuelva una tupla que incluya el valor máximo y su posición.
Métodos de ordenamiento

Ejercicio 3
Escribir una función que reciba una cadena a buscar y una lista de tuplas
(nombre_completo, telefono), y busque dentro de la lista, todas las
entradas que contengan en el nombre completo la cadena recibida
(puede ser el nombre, el apellido o sólo una parte de cualquiera de
ellos). Debe devolver una lista con todas las tuplas encontradas.
Métodos de ordenamiento

Ejercicio 4
Se cuenta con una lista ordenada de productos, en la que uno consiste
en una tupla de (identificador, descripción, precio), y una lista de los
productos a facturar, en la que cada uno consiste en una tupla de
(identificador, cantidad). Se desea generar una factura que incluya la
cantidad, la descripción, el precio unitario y el precio total de cada
producto comprado, y al final imprima el total general. Escribir una
función que reciba ambas listas e imprima por pantalla la factura
solicitada.
Métodos de ordenamiento

Ejercicio 5
Escribir una función que reciba una lista ordenada y un elemento, si el
elemento se encuentra en la lista, debe encontrar su posición, mediante
búsqueda binaria y devolverlo. Si no se encuentra, debe agregarlo a la
lista en la posición correcta y devolver esa nueva posición. (No utilizar
lista.sort())
Gracias

También podría gustarte