Programación estructurada

Algoritmos de búsqueda y ordenamiento

Algoritmos de ordenamiento

Una de las operaciones más comunes en computación es el ordenamiento de datos respecto a algún criterio en particular

 

Por lo mismo, son de las operaciones más estudiadas por el campo, así que nos vamos a enfocar en sólo tres algoritmos específicos:

  • Ordenamiento por burbuja (bubble sort)
  • Ordenamiento por inserción (insertion sort)
  • Ordenamiento por selección (selection sort)

Ordenamiento por burbuja

Sea a un arreglo de enteros de longitud n, entonces:

Para i = 0 hasta  n - 2
	Para j = 0 hasta n - 2
		Si (a(j) > a(j + 1)
			temp = a(j)
			a(j) = a(j + 1)
			a(j + 1) = temp
		Fin-si
	Fin-para
Fin-para

Básicamente lo único que hace es recorrer el arreglo y cambar el orden de dos elementos consecutivos que estén fuera de orden

Ordenamiento por inserción

Sea a un arreglo de enteros de longitud n, entonces:

Para i = 1 hasta n - 1
       j = i
	Mientras (j > 0) Y (a(j) < a(j - 1))
         temp = a(j)
         a(j) = a(j - 1)
         a(j - 1) = temp
         j = j - 1 
	Fin-mientras
Fin-para

Básicamente lo único que hace es recorrer el arreglo e insertar cada elemento en la parte ordenada del arreglo que le corresponde

Ordenamiento por selección

Sea a un arreglo de enteros de longitud n, entonces:

Para i = 0 hasta n - 1
	sub = i
	Para j = i + 1 hasta n - 1
		Si a(j) < a(sub)
			sub = j
		Fin-si
	Fin-para
	temp = a(i)
	a(i) = a(sub)
	a(sub) = temp
Fin-para

Se encuentra el menor elemento en la parte no ordenada del arreglo y cambiarlo con el primer elemento en la parte ordenada del arreglo

Comparación

Burbuja Inserción Selección
Mejor tiempo O(n) O(n) O(n2)
Tiempo promedio O(n2) O(n2) O(n2)
Peor tiempo O(n2) O(n2) O(n2)
Espacio O(1) O(1) O(1)

Algoritmos de búsqueda

Al igual que las operaciones de ordenamiento, las operaciones de búsqueda también están muy estudiadas en el campo, así que nos vamos a enfocar en dos algoritmos muy específicos:

  • Búsqueda secuencial
  • Búsqueda binaria

Búsqueda secuencial

i = 0
Mientras i < n
	Si a(i) == valor
    	Regresar i
    Fin-si
    Si no
    	i = i + 1
    Fin-si no
Fin-mientras
Regresar -1

Sea a un arreglo de enteros de longitud n, entonces:

Se compara el valor con cada elemento del arreglo y se detiene cuando lo encuentra (si es que existe)

Búsqueda binaria

inf = 0
sup = n - 1
Mientras inf <= sup
	centro = ((sup - inf) / 2) + inf
	Si a[centro] = valor
    	Regresar centro
	Fin-si    	
    Si no
    	Si valor < a[centro]
        	sup = centro - 1
        Fin-si
        Si no
        	inf = centro + 1
        Fin-si no
    Fin-si no
Fin-mientras
Regresar -1

Sea a un arreglo ordenado de enteros de longitud n, entonces:

Se compara el valor con el valor central del arreglo, y se vuelve a comparar con la mitad de cada parte hasta ser encontrado (si es que existe)

Comparación

Secuencial Binaria
Mejor tiempo O(1) O(1)
Tiempo promedio O(n) O(log n)
Peor tiempo O(n) O(log n)
Espacio O(1) O(1)

Programación estructurada: Algoritmos de búsqueda y ordenamiento

By Gilberto 🦁

Programación estructurada: Algoritmos de búsqueda y ordenamiento

Algoritmos de búsqueda y ordenamiento

  • 187