Beruflich Dokumente
Kultur Dokumente
Corrimiento
Algoritmos
Computacionales
“La técnica al
servicio de la patria”
• Uno de los factores que ha provocado el
desarrollo y crecimiento de las
computadoras es la confiabilidad en la
exactitud y seguridad de que los datos
Corrimiento
almacenados.
• En una estructura de datos secuencial
como es el caso de un arreglo, para
agregar o eliminar datos, se utiliza la
técnica de corrimiento, esta técnica
asegura confiabilidad en su contenido.
• Se define el arreglo o vector.
int arreglo [5]
Corrimiento
toma un ejemplo en el cual lo datos se
encuentran ordenados
cin>>arreglo[i]
arreglo
3 7 9 12 Apuntadores o
0 1 2 3 4
Punteros
Corrimiento a la derecha
Agregar
4
Corrimiento a la derecha - Agregar
Corrimiento a la Derecha
Ejemplo:
• Imagine que se requiere agregar el numero 8
en el arreglo definido anteriormente
arreglo
3 7 9 12 Apuntadores o
0 1 2 3 4
Punteros
• De tal forma que el resultado debe ser:
3 7 8 9 12 Apuntadores o
0 1 2 3 4
Punteros
Corrimiento a la derecha - Agregar
Procedimiento:
for (k=0 …..
1.- Agregar el numero a ingresar if (numero <arreglo[i])
Corrimiento a la Derecha
{ parar = i;}
cin>>numero
2.- Identificar el lugar en donde debe colocarse el numero a ingresar.
Se compara el numero a agregar con cada uno de los elementos
en el arreglo, en el momento que se detecte que el numero a
agregar es menor al número contenido en el arreglo se sabe que
es el lugar que debe ocupar el numero ingresado
arreglo 3 7 9 12 Apuntadores o
0 1 2 3 4
¿El 8 es Punteros
menor que 3?
8 ¿El 8 es
menor que 7?
numero ¿El 8 es
menor que 9? Por lo tanto este es el lugar que debe
ocupar el número ingresado
Corrimiento a la derecha - Agregar
3.- Corrimiento a la derecha
o Se inicia con la última posición “n”
o Se copia el contenido de la posición “n” a n+1
o Se repite hasta llegar a la posición identificada en donde se debe
Corrimiento a la Derecha
colocar el numero ingresado.
arreglo 3 7 9 12
0 1 2 3 4
8 1
numero
2
Corrimiento a la Derecha
arreglo for (j=n; j>parar; j--)
3 7 9 12 {
0 1 2 3 4 arreglo [n] = arreglo[n+1];
}
Pasada 1
3 7 9 12 12 overflow
0 1 2 3 4
Pasada 2
3 7 9 9 12
0 1 2 3 4
Corrimiento a la derecha - Agregar
4.- Una vez hecho el espacio, se copia el numero ingresado en la
posición identificada en donde debe de ir.
Corrimiento a la Derecha
arreglo 3 7 9 9 12
0 1 2 3 4
8
numero
3 7 8 9 12
0 1 2 3 4
Corrimiento a la izquierda
Eliminar
10
Corrimiento a la izquierda - Eliminar
Procedimiento:
for (k=0; …..
1.- Eliminar un numero dentro del arreglo if (numero == arreglo[i])
Corrimiento a la Izquierda
{
cin>>numero
eliminar = i;
2.- Identificar el numero a eliminar }
Se compara el numero a eliminar con cada uno de los elementos
en el arreglo, en el momento que se detecte el numero (es igual
a ) se detiene la comparación
arreglo 3 7 8 9 12 Apuntadores o
0 1 2 3 4
¿El 7 es Punteros
igual a 3?
7 ¿El 7 es
igual a 7?
numero
Por lo tanto éste es el numero a eliminar
Corrimiento a la izquierda - Eliminar
3.- Corrimiento a la izquierda
o Se inicia con la posición identificada como “eliminar”
o Se copia el elemento anterior en la posición a “eliminar”
Corrimiento a la Izquierda
o Se repite hasta llegar al final del arreglo.
arreglo 3 7 8 9 12
0 1 2 3 4
7 3
2
numero
1
Corrimiento a la Izquierda
0 1 2 3 4
for (j=parar; j<n; j++)
{
Pasada 1
3 8 8 9 12 arreglo [j] = arreglo[j+1];
}
0 1 2 3 4
Pasada 2
3 8 9 9 12
0 1 2 3 4
Pasada 3
3 8 9 12 12
0 1 2 3 4
Corrimiento a la Izquierda - Eliminar
4.- Para borrar la basura se puede mover Nulos a la última posición
arreglo
Corrimiento a la Izquierda
3 8 9 12 12
0 1 2 3 4
3 8 9 12
0 1 2 3 4
• Sznajdleder Pablo, Algoritmos a fondo, Editorial
Alfaomega,México 2012.
BIBLIOGRAFÍA
• Brassard G., Bratley P., Fundamentos de Algoritmia, Editorial
Prentice Hall, México 1997, págs. 608, ISBN 84-89660-00-X.
15