Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Trabajo Dealgoritmo
Trabajo Dealgoritmo
Trabajo Dealgoritmo
UNIDIMENSIONALES Y BIMENSIONALES
INTEGRANTES:
JESUS DAVID GUERRA PINEDA
CAMILO RUZ ORTIZ
JUAN DAVID BARRIO CARO
IGNACIO DE JESUS RIVERA CONDE
GUILLERMO SALGADO
UNIVERSIDAD DE CARTAGENA
FACULTAD DE INGENIERIA DE SOFTWARE
PRIMER SEMESTRE
MAGANGUE-BOLIVAR
NOVIEMBRE 2019
Contenido
1. introducción...............................................................................................................................3
1. Arreglo unidimensional..............................................................................................................4
2.1 ejemplo de pseint...............................................................................................................5
3 Arreglos bidimensionales...........................................................................................................7
4 TDA PILA.....................................................................................................................................8
4.1 IMPLEMENTACIÓN CON VECTORES....................................................................................9
5 TDA COLA.................................................................................................................................10
5.1 IMPLEMENTACION CON VECTORES DE COLA...................................................................11
6 ALGORITMOS DE BÚSQUEDA...................................................................................................13
6.1 BÚSQUEDA SECUENCIAL...................................................................................................13
6.2 BÚSQUEDA BINARIA.........................................................................................................15
7 ORDENAMIENTO DE COMPONENTES.......................................................................................16
7.1 ORDENAMIENTO ASCENDENTE........................................................................................16
7.2 EL ORDENAMIENTO POR SELECCIÓN................................................................................17
7.3 EL ORDENAMIENTO POR INSERCIÓN................................................................................18
7.4 EL ORDENAMIENTO DE SHELL..........................................................................................19
8 Cadena de caracteres...............................................................................................................20
9 conclusión................................................................................................................................21
1. introducción
A medida de este trabajo estaremos explicando sobre lo que son arreglos
(unidimensionales, bidimensionales) daremos a conocer ciertos ejemplos de dichos temas
mencionado anteriormente. en los cuales se hablará acerca de cada uno de los procesos que
se tiene que realizar como lo son pila, cola, búsquedas, ordenamiento y secuencias a
Atraves de cada uno de los conceptos y ejercicios que aprenderemos a medida que
avancemos conoceremos cada uno de sus conceptos y procesos.
1. Arreglo unidimensional
Un arreglo unidimensional es un tipo de datos estructurado que está formado de una
colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar
listas de elementos iguales. El tipo de acceso a los arreglos unidimensionales es el acceso
directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar
a elementos anteriores o posteriores, esto mediante el uso de un índice para cada elemento
del arreglo que nos da su posición relativa. Para implementar arreglos unidimensionales se
debe reservar espacio en memoria, y se debe proporcionar la dirección base del arreglo, la
cota superior y la inferior.
En C++ los arreglos se declaran de la siguiente forma:
Tipodedato nombredelarreglo[tamañodelarreglo];
Como podemos ver, es similar a declarar una variable convencional, solo que se coloca
entre corchetes el número de posiciones del arreglo, por lo que todas las posiciones serán
del mismo tipo.
Al trabajar arreglos hacemos referencia a cada posición del arreglo a través de su número
de índice, el cual comienza a partir del cero, de tal forma que para almacenar el número 10
en la posición 6 de un arreglo escribiríamos:
x[5]=10;
Parra llenar todos los elementos del arreglo es común emplear un ciclo que nos permita
recorrer el arreglo desde la primera hasta la última posición, tal y como podemos ver en el
siguiente ejemplo:
2.1ejemplo de pseint
Algoritmo arreglos
acum<-0;
//pedimos el tamaño
Escribir "digite el numero del vector (arreglo)"
Leer t;
//creamos el arreglo y le pasamos el pamaño ingresado
Dimension vector[t];
//llenamos el arreglo con un ciclo para
Para i<-1 Hasta t Con Paso 1 Hacer
//pedimos los numeros
Escribir "digite un numero";
Leer num;
vector[i]<-num;//le damos al vector los numeros ingresados
acum<-acum+vector[i];//acumulamos los numeros y los
sumamos
Fin Para
//imprimimos todos los datos del arreglo
Para i<-1 Hasta t Con Paso 1 Hacer
Escribir "la suma de:",vector[i]
Fin Para
//resultado total
Escribir "Es:",acum;
FinAlgoritmo
Algoritmo arreglo
//pedimos la cantidad
Escribir "digite el numero de pais"
Leer n;
//creamos el arreglo y le pasamos el tamaño ingresado
Dimension paises[n]
//llenamos el arreglo con un ciclo para
Para i<-1 Hasta n Con Paso 1 Hacer
Escribir "digite pais",i;//pedimos los paises
leer nombre;
paises[i]<-nombre;//le pasamos al arreglo los paises
ingresados
Fin Para
//pedimos la posicion
Escribir "digite la posicion";
Leer pos;
//mostramos el pais que se encuentra en la posicion digitada
Escribir "El pais que hay en la posicion
",pos,"es:",paises[pos];
FinAlgoritmo
3 Arreglos bidimensionales
Son estructuras de datos que agrupan muchos datos del mismo tipo, en donde cada
elemento se puede trabajar individualmente y se puede hacer referencia con un mismo
nombre. Se usan para representar datos que pueden verse como una tabla con filas y
columnas.
Ejemplo:
#include <stdio.h>
int main()
{
int fila, columna;
int matriz[2][2];
for(fila=0; fila<2; fila++)
for(columna=0; columna<2; columna++)
printf(“%d”, matriz[fila][columna]);
return 0;
}
Es un arreglo de dos dimensiones. Son estructuras de datos que agrupan muchos datos del
mismo tipo, en donde cada elemento se puede trabajar individualmente y se puede
referenciar con un mismo nombre. Se usan para representar datos que pueden verse como
una tabla con filas y columnas.
Para referenciar un elemento de la matriz, debe darse un nombre de la matriz y el índice de
la fila y de la columna que el elemento ocupa en dicha matriz. Es importante que los índices
de las matrices tanto de las filas como de las columnas empiezan en 0 y terminan en tamaño
fila-1 y tamaño columna-1 respectivamente.
A las matrices se le asignan automáticamente valores iniciales predeterminados a cada uno
de sus elementos, de acuerdo a los siguientes criterios:
Si el tipo del arreglo es numérico, a sus elementos se les asigna el valor cero.
Si el tipo del arreglo es char, a sus elementos se les asigna el valor ‘\u0000′.
Si el tipo del arreglo es bool, a sus elementos se les asigna el valor false.
Si el tipo del arreglo es una clase, a sus elementos se les asigna el valor null.
4 TDA PILA
una pila es una lista ordenada de elementos en la que todas las inserciones y supresiones se
realizan por un mismo extremo denominado tope o cima de la pila.
Estructura LIFO (Last In First Out): “último en entrar primero
en salir”
Operaciones básicas
PUSH: apilar, meter
POP: desapilar, sacar
TOP: cima, tope
Operación Pop
Algoritmo POP (P: PILA, X: ELEMENTO, ok:
lógico) es Operación Top
INICIO Algoritmo TOP (P: PILA, X: ELEMENTO,
Vacia(P, resp);
ok:lógico) es
si resp entonces
ok:= falso; {no hay resp: lógico;
elementos q sacar}
sino INICIO
X:= P.arreglo[P.tope];
P.tope:= P.tope -1; Vacia?(P, resp);
ok:= cierto; si resp entonces
finsi;
FIN ok:= falso; {pila vacía}
sino
ok:= cierto;
X:= P.arreglo[P.tope];
finsi;
FIN
Operación Push
Algoritmo PUSH (P: Pila, X: ELEMENTO,
ok: lógico) es
resp: lógico;
INICIO
Llena?(P,resp);
si resp entonces
ok:= falso;
sino
P.tope:= P.tope + 1;
P.arreglo[P.tope]:= X;
ok:= cierto;
finsi;
FIN
5 TDA COLA
una cola es una lista ordenada de elementos en la que todas las inserciones se realizan por
un extremo (frente o principio) y las supresiones se realizan por el otro (final).
Estructura FIFO (First In First Out): “primero en entrar primero en salir”
Operaciones básicas
QUEUE: encolar, meter
DEQUEUE: desencolar,
sacar
Si el principio de la cola es fijo en la primera posición del vector y el final es variante para
eliminar un elemento de la cola hay que desplazar todos los demás una posición (Dequeue()
es ineficiente).
Sistemas de tiempo compartido: los recursos (CPU, memoria, …) se asignan a los procesos
que están en cola de espera en el orden en el que fueron introducidos.
Los procesos de búsqueda involucran recorrer un arreglo completo con el fin de encontrar
algo. Lo más común es buscar el menor o mayor elemento (cuando es puede establecer un
orden), o buscar el índice de un elemento determinado.
Para buscar el menor o mayor elemento de un arreglo, podemos usar la estrategia, de
suponer que el primero o el último es el menor (mayor), para luego ir comparando con cada
uno de los elementos, e ir actualizando el menor (mayor). A esto se le llama Búsqueda
Lineal.
Algoritmos de Búsqueda
Para encontrar un dato dentro de un arreglo, para ello existen diversos algoritmos que
varían en complejidad, eficiencia, tamaño del dominio de búsqueda.
Algoritmos de Búsqueda:
Búsqueda Secuencial
Búsqueda Binaria
6.1BÚSQUEDA SECUENCIAL
Consiste en ir comparando el elemento que se busca con cada elemento del arreglo hasta
cuándo se encuentra.
• Busquemos el elemento ‘u’
• Búsqueda de elemento
encontrado=-1;
for (i=0;i<n;i++)
if ( a[i]==elemento_buscado )
encontrado=i;
6.2BÚSQUEDA BINARIA
Dados un entero X y un array A de n enteros que se encuentran ordenados y en memoria,
encontrar un i talque A[i] == X o retornar 0 si X no se encuentra en el array (consideramos
los elementos del array de 1 a N. La estrategia consiste en comparar X con el elemento del
medio del array, si es igual entonces encontramos el elemento, sino, cuando X es menor
que el elemento del medio aplicamos la misma estrategia al array a la izquierda del
elemento del medio y si X es mayor que el elemento del medio aplicamos la misma
estrategia al array a la derecha de dicho elemento
{
int izq=1,medio,der=n;
A[0]=X;
do {
medio = (izq+der) / 2;
medio=0;
else der=medio-1;
return medio; }
7 ORDENAMIENTO DE COMPONENTES
7.1ORDENAMIENTO ASCENDENTE
La Figura muestra todo el proceso de ordenamiento. En cada paso, el ítem mayor restante
se selecciona y luego se pone en su ubicación correcta. La primera pasada ubica el 93, la
segunda pasada ubica el 77, la tercera ubica el 55, y así sucesivamente.
El ordenamiento por inserción, aunque sigue siendo O(n2), funciona de una manera
ligeramente diferente. Siempre mantiene una sub-lista ordenada en las posiciones inferiores
de la lista. Cada ítem nuevo se “inserta” de vuelta en la sub-lista previa de manera que la
sub-lista ordenada sea un ítem más largo.
La Figura muestra el proceso de ordenamiento por inserción. Los ítems sombreados
representan las sub-listas ordenadas a medida que el algoritmo lleva a cabo cada pasada.
Comenzamos asumiendo que una lista con un ítem (posición 0) ya está ordenada. En cada
pasada, una para cada ítem desde 1 hasta n−1, el ítem actual se comparara contra los de la
sublista ya ordenada. A medida que revisamos en la sublista ya ordenada, desplazamos a la
derecha los ítems que sean mayores. Cuando llegamos a un ítem menor o al final de la
sublista, se puede insertar el ítem actual.
Este proceso se puede en la Figura La lista tiene nueve ítems. Si usamos un incremento de
tres, hay tres sublistas, cada una de las cuales puede ordenarse mediante un ordenamiento
por inserción. Después de completar estos ordenamientos, obtenemos la lista que se
muestra en la Figura 7. Aunque esta lista no está completamente ordenada, ha ocurrido algo
muy interesante. Al ordenar las sublistas, hemos acercado los ítems a donde realmente
pertenecen.
8 Cadena de caracteres
Es una secuencia ordenada de longitud arbitraria de elementos que pertenecen a un
cierto lenguaje formal o alfabeto; análogas a una frase o a una oración. En general, una
(letras, números, espacio, signos o símbolos).
formada por cualquier combinación finita de todo el juego de caracteres disponibles (las
letras de la 'a' a la 'z' y de la 'A' a la 'Z', los números del '0' al '9', el espacio en blanco ' ',
En este ámbito se utilizan normalmente como un tipo de dato predefinido, para palabras,
datos, o matriz de datos de una sola fila (array en inglés). Las cadenas se pueden almacenar
eficiencia de acceso.
Un caso especial de cadena es la que contiene cero caracteres, a esta cadena se la llama
cadena vacía.