Вы находитесь на странице: 1из 14

INGENIERÍA EN DESARROLLO DE SOFTWARE

4to. Semestre Bloque 1


Estructura de datos
Unidad 2 Métodos de Ordenación y Búsqueda.

Alumno:
Adriana Sánchez Arreola

Asignatura:
Estructura de Datos
Matrícula:
ES1821016172

Docente:

Cesar Alexie Chan Puc

24/02/2020

0
Índice
Introducción a la Actividad 1 de la Unidad 2 .............................................................................................. 2
2.- ¿Qué es un método de ordenación?, mencione los más importantes . ................................................ 3
3.- ¿Qué es un método de Búsqueda?, mencione los más importante. ... .............................................. 3
4.- ¿En ambos, encuentra semejanzas o diferencias?, menciones brevemente cuáles son. .................... 4
5.- En un documento de Word, elabore una tabla con cuatro columnas donde incluyas para cada
método de ordenación y de búsqueda: una breve descripción, su característica principal, sus ventajas,
sus desventajas. La siguiente tabla es el ejemplo que se desea ocupes en esta actividad: ...................... 5
6.- En base al análisis de la tabla indica cual es mejor método de ordenación en tu opinión y justifica la
elección. Realiza lo mismo con el método de búsqueda, cual es el mejor y justifica la elección. ............ 7
7.- Explica un caso en particular para ejemplificar alguno de los métodos de ordenación. Describe con
amplitud y detalle el caso, resaltando las características del método elegido. ........................................ 7
Conclusión ............................................................................................................................................... 12

Referencias ............................................................................................................................................... 12

1
Introducción a la Actividad 1 de la Unidad 2:

Métodos de Ordenación y Búsqueda.

Identificar los algoritmos de ordenación y búsqueda básicos Instrucciones:

1.- Desarrolla los siguientes planteamientos dentro del foro:

2.- ¿Qué es un método de ordenación?, mencione los más importantes.

3.- ¿Qué es un método de Búsqueda?, mencione los más importante.

4.- ¿En ambos, encuentra semejanzas o diferencias?, menciones brevemente cuáles son.

5.- En un documento de Word, elabore una tabla con cuatro columnas donde incluyas para cada
método de ordenación y de búsqueda: una breve descripción, su característica principal, sus ventajas,
sus desventajas. La siguiente tabla es el ejemplo que se desea ocupes en esta actividad:

Algoritmo de Ordenación

Nombre y descripción Tipo: Recursivo/ Algoritmos Auxiliares Complejidad


Secuencial empleados Temporal

INSERCION Secuencial - Ο(𝑛2) Algoritmo de búsqueda


SECUENCIAL Secuencial - Ο(𝑛)

En el detalle de la actividad notaras mejor la tabla con las columnas que se solicitan.

6.- En base al análisis de la tabla indica cual es mejor método de ordenación en tu opinión y justifica
la elección. Realiza lo mismo con el método de búsqueda, cual es el mejor y justifica la elección.

7.- Explica un caso en particular para ejemplificar alguno de los métodos de ordenación. Describe con
amplitud y detalle el caso, resaltando las características del método elegido.

8.- Guarda tu actividad con nomenclatura DEDA_U2_A1_XXYZ. Sustituye las XX por las dos primeras
letras de tu primer nombre, la Y por tu primer apellido y la Z por tu segundo apellido.

2
1.- Desarrolla los siguientes planteamientos dentro del foro:

2.- ¿Qué es un método de ordenación?, mencione los más importantes.

Las estructuras de datos son utilizadas para almacenar información la cual para poder recuperar esa
información de manera eficiente se necesita que esté ordenada y para ello existen varios métodos
para ordenar las diferentes estructuras de datos.

Un método de ordenamiento es la forma que se utiliza para recuperar la información de manera


eficiente. El ordenar un grupo de datos significa mover los datos o sus referencias para que queden
en una secuencia tal que representen un orden, el cual puede ser numérico, alfabético o incluso
alfanumérico, ascendente o descendente.

Los métodos simples son:


Insertion sort (o por inserción directa)
Selection sort
Bubble sort
Shell sort (Es una extensión al insert sort siendo más rápido)

Los métodos complejos son:


Quick- sort
Heap sort

3.- ¿Qué es un método de Búsqueda?, mencione los más importante.

Es la que permite obtener datos anteriormente almacenados. Todo depende de cómo estén ordenados
los datos para el éxito o no de la búsqueda.
Se puede aplicar a elementos previamente ordenados o no ya que si no lo están la búsqueda se
complicaría un poco más el proceso.
Su principal función es conocer los métodos más importantes de búsqueda para poder aplicar el que
más convenga.

Se puede buscar en la memoria interna, en la memoria secundaria así mismo manejará las funciones
de dispersión.

3
Las cuales su función es localizar un contenido dentro de las bases de datos dentro de las aplicaciones
que estemos usando.

Secuencial o Lineal

Binaria o por Bisección


Búsqueda interna

Interpolación

Los tipos de métodos


de búsqueda son 2:

Secuencial
Búsqueda externa

Binaria

Árboles binarios de búsqueda

4.- ¿En ambos, encuentra semejanzas o diferencias?, menciones brevemente cuáles son.
MÉTODOS DE ORDENAMIENTO – MÉTODO DE BÚSQUEDA
DIFERENCIAS SEMEJANZAS
• La principal diferencia son las funciones ya • Son algoritmos
que son distintas, mientras uno ordena y el • Hacer que los datos sean más fáciles de
otro busca. consultar.

4
5.- En un documento de Word, elabore una tabla con cuatro columnas donde incluyas para cada método de
ordenación y de búsqueda: una breve descripción, su característica principal, sus ventajas, sus desventajas. La
siguiente tabla es el ejemplo que se desea ocupes en esta actividad:

Algoritmo de Ordenación

Tipo:
Algoritmos Auxiliares
Recursivo/ Complejidad
Nombre Descripción empleados
Secuencial Temporal

Toma uno por uno los Algoritmo secuencial


elementos y avanza Se desempeña bien con paquetes
hacia su posición con pequeños de datos, requiere poca
INSERTION respecto a los memoria, su punto débil es que no
Secuencial Ο(𝑛2)
SORT anteriormente funciona bien con paquetes
ordenados hasta grandes de datos
recorrer todo el Puede llegar a demorar mucho.
arreglo.
Consiste en encontrar Algoritmo secuencial
el menor de todos los Se desempeña bien con paquetes
elementos del arreglo pequeños de datos, requiere poca
e intercambiarlo con el memoria, su punto débil es que no
que está en primera funciona bien con paquetes
SELECTION
posición, luego el Secuencial grandes de datos. O (𝑛2)
SORT
segundo más
pequeño y así Selecciona el menor elemento de
sucesivamente hasta la secuencia no ordenada y lo
ordenar todo el intercambia.
arreglo.
Se recorre el arreglo Algoritmo secuencial
intercambiando los Prácticamente lo que hace es
elementos adyacentes tomar el elemento mayor y lo va
que estén recorriendo en posición hasta
BUBBLE
desordenados se Secuencial ponerlo en su lugar. O (𝑛2)
SORT
recorre el arreglo
tantas veces hasta
que ya no haya
cambios que realizar
SHELL Asigna una distancia y Algoritmo secuencial
Secuencial O (𝑛2)
SORT ordena entre ellos Compara e intercambia
Utiliza un pivote y Algoritmo recursivo
ordena los elementos División por pivote.
según él. Divide y Permite ordenar una cantidad de
QUICK
vencerás. Recursivo elementos en un tiempo O (𝑛2)
SORT
proporcional a n2 en el peor de los
casos o a n lon n en el mejor de los
casos.
Almacena los Algoritmo secuencial
HEAP SORT elementos en un Secuencial 𝑂 (𝑛log𝑛)
montículo y luego

5
extrae el nodo que Utiliza un árbol binario para
queda como raíz, la estructurar el proceso de
cima siempre contiene ordenamiento
el menor elemento.

Algoritmo de Búsqueda

Tipo:
Algoritmos Auxiliares
Recursivo/ Complejidad
Nombre Descripción empleados
Secuencial Temporal

Consiste en Algoritmo secuencial


chequear la se pueden realizar búsquedas
estructura de los de forma no ordenada, además
datos elemento por es fácil de implementar, su
elemento, hasta desventaja es que, trabajar con
SECUENCIAL Secuencial 𝑂 (𝑛)
identificar el dato listas grandes puede resultar
que estamos complicado, debido a que revisa
buscando, o hasta uno por uno cada elemento,
llegar al final de la esto se verá reflejado en la
estructura de datos. velocidad de la consulta.
Presenta mucha Algoritmo recursivo
dificultad para la Esta técnica requiere que los
programación de sus elementos de la lista, sobre las
datos, además es que va a actuar estén
BINARIA O POR muy rápida para su clasificados (debidamente
Recursivo 𝑂 (log𝑛)
BISECCIÓN ejecución. ordenadas), ya sea de forma
ascendente o descendente,
cada elemento de la lista puede
tener varios campos.

se puede aplicar Algoritmo recursivo


solamente a tablas o El algoritmo es similar al de
archivos ordenados búsqueda binaria, la diferencia
INTERPOLACIÓN Recursivo está en que, en vez de dividir el 𝑂 (log2𝑛)
área en mitades, se delimita por
medio de los valores resultantes
de la interpolación.
Es como el árbol Algoritmo secuencial
genealógico en el De todos los nodos que
cual a cada contiene el árbol existe uno que
generación se le no tiene antecesor que se llama
ÁRBOLES
conoce como nivel. Secuencial raíz, el cual para unos autores 𝑂 (𝑛log𝑛)
BINARIOS
representa el nivel cero y para
otros el uno, también el nivel de
un nodo es igual al de su
antecesor más uno.

6
6.- Cual es el mejor y justifica la elección.

El método de ordenación rápida (Quick sort) considero que es el mejor por su rápida ejecución, no
requiere memoria adicional, aunque trabaja con recursividad e implementación complicada es algo
con el cual la práctica nos va a ayudar. En cuanto a la búsqueda el mejor sería el de interpolación ya
que se puede aplicar a tablas o archivos ordenados, pero también todo depende de que método
utilicemos y ver cual es el que nos conviene.

7.- Explica un caso en particular para ejemplificar alguno de los métodos de ordenación.
Describe con amplitud y detalle el caso, resaltando las características del método elegido.

Ordenación rápida (QuickSort)

QuickSort es un algoritmo basado en el principio “divide y vencerás”. Es uno de los algoritmos más
rápidos conocidos para ordenar. Este método es recursivo, aunque existen versiones con formas
iterativas que lo hacen aún más rápido. Su funcionamiento es de la siguiente manera:

• Se elige un número del vector como referencia, al que se le llamará “pivote”.

• Reordenar el arreglo de tal forma que los elementos menores al pivote queden en el lado
izquierdo y al lado derecho los elementos mayores.

• Se hace uso de la recursividad para ordenar tanto el conjunto de la izquierda como el de la


derecha.

Un ejemplo sería:

Ordenar seis números aleatorios, los números se ordenarán de menor a mayor, se muestra el vector
original solicitado al usuario.

1. Se solicita por teclado el tamaño del arreglo, en este caso sería de seis.
2. Se capturan los 6 números en desorden
3. Se realiza la búsqueda de los números
4. El primer número capturado se toma como pivote, es decir será el que divida a la mitad los valores
capturados, a su izquierda los menores a él, y a la derecha los de valor mayor.
5. Una vez que ordeno ambas partes de la lista están ordenadas, procede a ordenarlos de forma
ascendente

7
6. Una vez que el programa determina que los números están ordenados, procede a imprimir el
resultado en pantalla

Tenemos nuestro vector original:

{20,12,28,24,8,4,16}

Obtenemos variables:

inicio=0; fin=6; pivote=20;

elemIzq=1;
elemDer=6;

Recursivo 1

Iteración 1 del ciclo while.

{20,12,28,24,8,4,16}

Compara 12 – 16, no hay cambio.

Iteracion 2

{20,12,28,24,8,4,16}

Cambia 28 por 16.

{20,12,16,24,8,4,28}

Iteracion 3

{20,12,16,24,8,4,28}

Cambia 24 por 4.

8
{20,12,16,4,8,24,28}

Cambia 8 por 20.

{8,12,16,4,20,24,28}

Recursividad 2-1

inicio=0; fin=3; pivote=8;


elemIzq=1;
elemDer=3;

Iteracion 1:

{8,12,16,4,20,24,28}

Cambia 4 por 12

{8,4,16,12,20,24,28}

Cambia 8 por 4

{4,8,16,12,20,24,28}

Recursividad 2.2

inicio=2; fin=3; pivote=16;


elemIzq=3;
elemDer=3;

{4,8,16,12,20,24,28}

cambia 16 por 12.

{4,8,12,16,20,24,28}

9
Nuestro vector ya está ordenado, pero falta terminar el proceso recursivo.

Recursividad 3.1

No hay cambios, el vector ya está ordenado.

Recursividad 3.2

No hay cambios, el vector ya está ordenado.

Código del algoritmo


public static void quickSort(int vec[], int inicio, int fin){
if(inicio>=fin) return;
int pivote=vec[inicio];
int elemIzq=inicio+1;
int elemDer=fin;
while(elemIzq<=elemDer){
while(elemIzq<=fin && vec[elemIzq]<pivote){
elemIzq++;
}
while(elemDer>inicio && vec[elemDer]>=pivote){
elemDer--;
}
if(elemIzq<elemDer){
int temp=vec[elemIzq];
vec[elemIzq]=vec[elemDer];
vec[elemDer]=temp;
}
}

if(elemDer>inicio){
int temp=vec[inicio];
vec[inicio]=vec[elemDer];
vec[elemDer]=temp;
}

10
quickSort(vec, inicio, elemDer-1);
quickSort(vec, elemDer+1, fin);
}
Implementación
public class QuickSort {

private static int vec[]={20,12,28,24,8,4,16};

public static void main(String[] args) {


System.out.println("Vector original");
imprimirVector(vec);
ordenacionRapida(vec);
System.out.println("\nVector ordenado");
imprimirVector(vec);
}

public static void ordenacionRapida(int vec[]){


final int N=vec.length;
quickSort(vec, 0, N-1);
}

public static void quickSort(int vec[], int inicio, int fin){


if(inicio>=fin) return;
int pivote=vec[inicio];
int elemIzq=inicio+1;
int elemDer=fin;
while(elemIzq<=elemDer){
while(elemIzq<=fin && vec[elemIzq]<pivote){
elemIzq++;
}
while(elemDer>inicio && vec[elemDer]>=pivote){
elemDer--;
}
if(elemIzq<elemDer){
int temp=vec[elemIzq];
vec[elemIzq]=vec[elemDer];
vec[elemDer]=temp;
}
}

11
if(elemDer>inicio){
int temp=vec[inicio];
vec[inicio]=vec[elemDer];
vec[elemDer]=temp;
}
quickSort(vec, inicio, elemDer-1);
quickSort(vec, elemDer+1, fin);
}

public static void imprimirVector(int vec[]){


for(int i=0;i<vec.length;i++){
System.out.print(vec[i]+" ");
}
}

Conclusión:

Es muy importante conocer los métodos de ordenamiento y de búsqueda sus ventajas, desventajas,
características y funciones para que dependiendo de cualquier proyecto o problema que se nos
presente como desarrolladores, buscar la mejor solución para su mejor funcionamiento.

Referencias
UnADM. (s.f). Ordenación y búsqueda. Febrero de 2020, de UnADM Sitio web:
https://ceit.unadmexico.mx/contenidos/DCEIT/BLOQUE1/DS/04/DEDA/U2/descargables/U
nidad%202.%20Ordenacion%20y%20busqueda.pdf

L. Joyanes & I. Zahonero. (2012). Algoritmos de ordenación básicos. En Algoritmos, Estructuras de Datos y Programación
Orientada a Objetos (430-451). Madrid: Mc Graw Hill.

12
Cormen T. H., L. C. (2003). UNADM. Obtenido de Introduction to Algorithms, Second Edition, The MIT Press:
file:///D:/UNADM/Desarrollo%20de%20Ingenieria%20de%20Software/SEMESTRE%204/Estructura%20de%20datos/A
1-material.pdf

Ernesto, L. G. (4 de mayo de 2018). Curso Java Intermedio #34 | Analizador sintáctico (Listas tipo pila en Java). Obtenido de
https://www.youtube.com/watch?v=qjoWWoAVdSI

Jimdo. (s.f.). Tutospoo. Obtenido de https://tutospoo.jimdofree.com/tutoriales-java/métodos-de-ordenación/ordenación-


rápida-quicksort/

KAFE1315. (31 de Mayo de 2010). kafe1315.blogspot.com. Obtenido de http://kafe1315.blogspot.com/2010/06/listas.html

S, S. S. (2018). UNADM. Obtenido de The Algorithm Design Manual, Second Edition, SpringerVerlag, London:
file:///D:/UNADM/Desarrollo%20de%20Ingenieria%20de%20Software/SEMESTRE%204/Estructura%20de%20datos/A
1-material.pdf

Uriarte, J. M. (13 de Diciembre de 2019). Características.co. Obtenido de https://www.caracteristicas.co/algoritmo/

13

Вам также может понравиться