MCOM1_U2_A3_CRAB

12
Cristo Jesus Alanis Barrera AL12508835 Actividad 3. Desarrollo de algoritmos típicos Computación I

Transcript of MCOM1_U2_A3_CRAB

Page 1: MCOM1_U2_A3_CRAB

Cristo Jesus Alanis Barrera

AL12508835

Actividad 3. Desarrollo de algoritmos típicos

Computación I

Lic. en Matemáticas

Page 2: MCOM1_U2_A3_CRAB

Instrucciones: Resuelve el siguiente problema, tomando en cuenta los lineamientos que se presentan a continuación. Recuerda que puede ser en leguaje C o en Java.

1. Obtén el código del algoritmo de Búsqueda Binaria (binary search) en un lenguaje de programación con el que te sientas cómodo (tal vez C o Java) (existen numerosas fuentes en las que lo puedes encontrar pues es muy popular).

Fuente: http://www.programmingsimplified.com/c/source-code/c-program-binary-search

Page 3: MCOM1_U2_A3_CRAB

2. Analiza el código obtenido y construye su representación en pseudocódigo y en diagrama de flujo de acuerdo a las guías que te presentamos en esta unidad.

1. Inicio.2. Declaración de variables c, first, last, middle, n, search, array[100] como enteros

Salida (‘Introduzca la cantidad de elementos’)n <- Entrada numéricaSalida (‘Introduzca n valores enteros’)c <- 0for c < n

array[c] <- Entrada numéricaend-for

Salida (‘Introduzca el valor a encontrar’)search <- Entrada numérica

first <- 0last <- n -1middle = (first + last)/2while first <= last

if array[middle] < searchfirst <- middle + 1

else-if array[middle] = searchSalida (‘Se encontro search en la localidad middle+1’)Goto 3

end-ifelse

last <- middle – 1end-if

middle <- (first + last)/2end-while

3. if first > lastSalida (‘search no se encontro en la lista’)

4. Fin

Pseudocódigo de algoritmo de búsqueda binaria

Page 4: MCOM1_U2_A3_CRAB

Diagrama de flujo de algoritmo de búsqueda binaria

Page 5: MCOM1_U2_A3_CRAB

3. Comenta en tus propias palabras si crees que este algoritmo es más eficiente que los de búsqueda que te presentamos en esta unidad y por qué.

El algoritmo de búsqueda binaria es uno de los más rápidos que existen para búsqueda de información, la desventaja que presenta a diferencia de otros algoritmos es que los datos tienen que estar ordenados en forma ascendente para que este algoritmo pueda funcionar debidamente. Para tener la certeza que el algoritmo funcione debidamente, podemos utilizar el algoritmo de quicksort previamente para ordenar los datos en caso de que no se encuentren ordenados.

Page 6: MCOM1_U2_A3_CRAB

4. Obtén el código del algoritmo QuickSort en un lenguaje de programación con el que te sientas cómodo (tal vez C o Java) (existen numerosas fuentes en las que lo puedes encontrar dado que es muy popular).

Page 7: MCOM1_U2_A3_CRAB

Fuente: http://www.dailyfreecode.com/code/quick-sort-2852.aspx

5. Analiza el código obtenido y construye su representación en pseudocódigo y en diagrama de flujo de acuerdo a las guías que te presentamos en esta unidad.

Para simplicidad, se pone la función principal de una forma breve

Page 8: MCOM1_U2_A3_CRAB

Diagrama de flujo de algoritmo de ordenación rápida (quick sort)

Page 9: MCOM1_U2_A3_CRAB

6. Comenta en tus propias palabras si crees que este algoritmo es más eficiente que los de ordenamiento y por qué.

Hasta la fecha el algoritmo de quicksort es el que tengo conocimiento que es uno de los más eficientes para realizar un ordenamiento de una forma rápida, el cual según [1] se observa que el algoritmo es de los más rápidos que existen para datos completamente aleatorios

Tiempos de ejecución de algoritmos de ordenación con arreglos ordenados aleatoriamente

Lamentablemente no se puede decir lo mismo del quick sort cuando el arreglo a ordenar se encuentra ordenado en forma normal o inversa

Tiempos de ejecución de algoritmos de ordenación con arreglos ordenados en forma normal

Tiempos de ejecución de algoritmos de ordenación con arreglos ordenados en forma inversa

Aunque desconocía esta deficiencia de este algoritmo para esta condición, considero que un algoritmo eficiente para sorteo podría ser validar que el arreglo esta

Page 10: MCOM1_U2_A3_CRAB

previamente ordenado en forma inversa o no (si ya esta ordenado normalmente, no tendría caso aplicar el algoritmo de ordenación), y dependiendo de esta condición, utilizar un ordenamiento tipo merge o en caso contrario utilizar quick sort.