Los algoritmos de búsqueda y ordenamiento en PSeInt son una excelente forma de practicar vectores, ciclos, condicionales y comparaciones. En esta guía vemos cinco métodos clásicos aplicados sobre vectores usando posiciones desde 1.
Antes de comenzar, si necesitás repasar vectores, podés ver nuestros 20 ejercicios resueltos de PSeInt con vectores.
Índice
- Búsqueda secuencial
- Búsqueda binaria
- Ordenamiento burbuja
- Ordenamiento por selección
- Ordenamiento por inserción
1. Búsqueda secuencial
La búsqueda secuencial recorre el vector desde el primer elemento hasta encontrar el valor buscado o llegar al final. Es simple y funciona aunque el vector no esté ordenado.
Algoritmo BusquedaSecuencial Definir numeros, i, buscado, posicion Como Entero Definir encontrado Como Logico Dimension numeros[5] Para i <- 1 Hasta 5 Hacer Escribir "Ingrese el valor ", i, ":" Leer numeros[i] FinPara Escribir "Ingrese el valor a buscar:" Leer buscado encontrado <- Falso posicion <- 1 Mientras posicion <= 5 Y NO encontrado Hacer Si numeros[posicion] = buscado Entonces encontrado <- Verdadero Sino posicion <- posicion + 1 FinSi FinMientras Si encontrado Entonces Escribir "Valor encontrado en la posicion ", posicion Sino Escribir "El valor no se encuentra en el vector" FinSi FinAlgoritmo
Ventaja: no necesita que los datos estén ordenados.
Desventaja: en el peor caso debe recorrer todo el vector.
2. Búsqueda binaria
La búsqueda binaria es más eficiente, pero requiere que el vector esté ordenado. En cada paso compara el valor buscado con el elemento central y descarta la mitad del vector.
Algoritmo BusquedaBinaria Definir numeros, buscado, izquierda, derecha, medio, posicion Como Entero Definir encontrado Como Logico Dimension numeros[8] numeros[1] <- 2 numeros[2] <- 5 numeros[3] <- 8 numeros[4] <- 12 numeros[5] <- 16 numeros[6] <- 20 numeros[7] <- 25 numeros[8] <- 30 Escribir "Ingrese el valor a buscar:" Leer buscado izquierda <- 1 derecha <- 8 encontrado <- Falso Mientras izquierda <= derecha Y encontrado = Falso Hacer medio <- Trunc((izquierda + derecha) / 2) Si numeros[medio] = buscado Entonces encontrado <- Verdadero posicion <- medio Sino Si buscado < numeros[medio] Entonces derecha <- medio - 1 Sino izquierda <- medio + 1 FinSi FinSi FinMientras Si encontrado Entonces Escribir "Valor encontrado en la posicion ", posicion Sino Escribir "El valor no se encuentra en el vector" FinSi FinAlgoritmo
Importante: si el vector no está ordenado, la búsqueda binaria no garantiza un resultado correcto.
3. Ordenamiento burbuja
El método burbuja compara elementos vecinos y los intercambia cuando están en el orden incorrecto. Después de cada pasada, los valores mayores van quedando al final del vector.
Algoritmo OrdenamientoBurbuja Definir numeros, i, j, auxiliar Como Entero Dimension numeros[5] Para i <- 1 Hasta 5 Hacer Escribir "Ingrese el valor ", i, ":" Leer numeros[i] FinPara Para i <- 1 Hasta 4 Hacer Para j <- 1 Hasta 5 - i Hacer Si numeros[j] > numeros[j+1] Entonces auxiliar <- numeros[j] numeros[j] <- numeros[j+1] numeros[j+1] <- auxiliar FinSi FinPara FinPara Escribir "Vector ordenado:" Para i <- 1 Hasta 5 Hacer Escribir numeros[i] FinPara FinAlgoritmo
Es uno de los métodos más fáciles de comprender, aunque no suele ser la mejor opción para grandes cantidades de datos.
4. Ordenamiento por selección
El método de selección busca el menor valor de la parte no ordenada del vector y lo coloca en la posición correspondiente.
Algoritmo OrdenamientoSeleccion Definir numeros, i, j, posicionMenor, auxiliar Como Entero Dimension numeros[5] Para i <- 1 Hasta 5 Hacer Escribir "Ingrese el valor ", i, ":" Leer numeros[i] FinPara Para i <- 1 Hasta 4 Hacer posicionMenor <- i Para j <- i + 1 Hasta 5 Hacer Si numeros[j] < numeros[posicionMenor] Entonces posicionMenor <- j FinSi FinPara Si posicionMenor <> i Entonces auxiliar <- numeros[i] numeros[i] <- numeros[posicionMenor] numeros[posicionMenor] <- auxiliar FinSi FinPara Escribir "Vector ordenado:" Para i <- 1 Hasta 5 Hacer Escribir numeros[i] FinPara FinAlgoritmo
Selección realiza menos intercambios que burbuja, aunque igualmente requiere muchas comparaciones.
5. Ordenamiento por inserción
El método de inserción toma cada elemento y lo coloca en la posición correcta dentro de la parte del vector que ya está ordenada.
Algoritmo OrdenamientoInsercion Definir numeros, i, j, actual Como Entero Dimension numeros[5] Para i <- 1 Hasta 5 Hacer Escribir "Ingrese el valor ", i, ":" Leer numeros[i] FinPara Para i <- 2 Hasta 5 Hacer actual <- numeros[i] j <- i - 1 Mientras j >= 1 Y numeros[j] > actual Hacer numeros[j+1] <- numeros[j] j <- j - 1 FinMientras numeros[j+1] <- actual FinPara Escribir "Vector ordenado:" Para i <- 1 Hasta 5 Hacer Escribir numeros[i] FinPara FinAlgoritmo
Inserción suele funcionar muy bien cuando el vector es pequeño o ya está casi ordenado.
Comparación rápida
| Algoritmo | Tipo | Requiere datos ordenados | Idea principal |
|---|---|---|---|
| Búsqueda secuencial | Búsqueda | No | Recorrer elemento por elemento |
| Búsqueda binaria | Búsqueda | Sí | Dividir el rango de búsqueda a la mitad |
| Burbuja | Ordenamiento | No | Comparar elementos vecinos |
| Selección | Ordenamiento | No | Buscar el menor y colocarlo en su posición |
| Inserción | Ordenamiento | No | Insertar cada elemento en la parte ya ordenada |
¿Cuál conviene usar?
Para aprender lógica de programación, los cinco métodos son muy útiles. La búsqueda secuencial es la más simple para empezar. Si los datos ya están ordenados, la búsqueda binaria permite encontrar valores mucho más rápido. Entre los métodos de ordenamiento, burbuja es el más fácil de visualizar, mientras que selección e inserción permiten practicar otras estrategias de recorrido e intercambio.
Seguí practicando PSeInt
También podés practicar con nuestros 20 ejercicios de vectores, los 20 ejercicios de ciclos y condicionales y los ejercicios básicos resueltos en PSeInt.
¿Te sirvió este contenido? ☕
Si esta guía te ayudó, podés apoyar a Club Programador con el monto que quieras. Tu aporte ayuda a mantener el contenido gratuito y a seguir publicando nuevos ejercicios.
🇦🇷 Apoyar desde Argentina
☕ Invitame un café con Mercado Pago