MCOM1_U2_A3_CRAB
Transcript of MCOM1_U2_A3_CRAB
Cristo Jesus Alanis Barrera
AL12508835
Actividad 3. Desarrollo de algoritmos típicos
Computación I
Lic. en Matemáticas
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
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
Diagrama de flujo de algoritmo de búsqueda binaria
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.
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).
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
Diagrama de flujo de algoritmo de ordenación rápida (quick sort)
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
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.