Académique Documents
Professionnel Documents
Culture Documents
Arreglos
Presentado por:
David Núñez - 21521086
Asignatura:
Programación III
Catedrático:
Ing. Juan Carlos Zepeda
2
1. ¿Qué es un arreglo?
donde, tipo se refiere al tipo de datos que contendrá el array. El tipo puede ser
cualquiera de los tipos estándar (char, int, float, etc.) o un tipo definido por el
usuario. Es más, el tipo del array puede ser de una estructura creada con: struct,
union y class. identificador se refiere al nombre que le daremos al array. tamaño es
opcional e indica el número de elementos que contendrá el array. Si un array se
declara sin tamaño, el mismo no podrá contener elemento alguno a menos que en la
declaración se emplee una lista de inicialización. lista de inicialización es opcional
y se usa para establecer valores para cada uno de los componentes del array. Si el
array es declarado con un tamaño específico, el número de valores inicializados no
podrá ser mayor a dicho tamaño.
3
3. ¿Cómo inicializar un arreglo en C++?
4
4. Algoritmos de ordenamiento en arreglos (iterativa)
El ordenamiento por inserción es una manera muy natural de ordenar para un ser
humano, y puede usarse fácilmente para ordenar un mazo de cartas numeradas
en forma arbitraria.
La idea de este algoritmo de ordenamiento consiste en ir insertando un elemento
de la lista o un arreglo en la parte ordenada de la misma, asumiendo que el primer
elemento es la parte ordenada, el algoritmo ira comparando un elemento de la
parte desordenada de la lista con los elementos de la parte ordenada, insertando
el elemento en la posición correcta dentro de la parte ordenada, y asi
sucesivamente hasta obtener la lista ordenada.
5
c. Ordenamiento burbuja
6
6. Algoritmos de búsqueda en arreglos (iterativa)
a. Búsqueda lineal
3 8 17 17 21 22 26 31 36 37 44 47 53 57 89 97
b. Búsqueda binaria
7
4. Si son distintos, evaluamos si vector[Icentro] es mayor o menos que la
clave, como el arreglo está ordenado al hacer esto ya podemos descartar
una mitad del arreglo asegurandonos que en esa mitad no está la clave que
buscamos. En nuestro caso vector[Icentro] = 4 < 6, entonces la parte del
arreglo vector[0...4] ya puede descartarse.
5. Reasignamos Iarriba o Iabajo para obtener la nueva parte del arreglo en
donde queremos buscar. Iarriba, queda igual ya que sigue siendo el tope.
Iabajo lo tenemos subir hasta 5, entonces quedaria Iarriba = 9, Iabajo = 5.
Y volvemos al paso 2.
8
7. Eficiencia de algoritmos: Notación Big O
En programación el rendimiento o la complejidad de un algoritmo se suele medir
utilizando una notación denominada Big-O, y también conocida como Notación
Asintótica o Notación Landau (en honor a uno de sus inventores, a principios del
siglo pasado, Edmund Landau).
Por ejemplo, imagínate una función que se utiliza para localizar un elemento dentro
de una lista de elementos previamente guardados. Si la documentación de la misma
nos dice que es una operación de tipo O(1), quiere decir que da igual cuántos
elementos haya en la lista, la operación siempre tarda lo mismo. Para ser más exactos
deberíamos decir que el esfuerzo de cómputo necesario es el mismo.
Ahora supongamos que tenemos una función que dibuja en una gráfica los puntos
que le pasemos en una matriz. Su documentación nos dice que su complejidad
es O(n). Esto quiere decir, para entendernos, que si pintar 1 punto implica, por
ejemplo, 10ms, pintar 2 implicaría 20ms, 3 puntos serían 30ms, etc... O sea, el
tiempo necesario para ejecutar la función es función directa y lineal del número de
elementos que le pasemos.
Atendiendo a su complejidad, las notaciones Big-O más comunes para todo tipo de
algoritmos y funciones son las que se muestran en esta lista:
O(1): constante.
O(n): lineal.
O(log n): logarítmica.
O(n2): cuadrática.
O(2n): exponencial.
O(n!); explosión combinatoria.
9
Ejercicio:
a. Crear un programa donde el usuario ingrese 20 números desordenados, y luego
el programa debe ordenarlo haciendo uso del algoritmo Ordenamiento burbuja.
Una vez ordenado el arreglo, realizar la búsqueda de un número, mediante el
algoritmo de búsqueda binaria.
10
Bibliografía
https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/Arrays_y_ca
denas_de_texto
http://lwh.free.fr/pages/algo/tri/tri_insertion_es.html
https://es.wikipedia.org/wiki/Ordenamiento_de_burbuja
https://ronnyml.wordpress.com/2009/07/09/busqueda-lineal-y-busqueda-binaria/
http://codigomaldito.blogspot.com/2005/11/busqueda-binaria.html
11