Está en la página 1de 4

CONTINUACION TEMA ARRAY UNIDIMENSIONAL O VECTOR 1

En archivo anexo llamado MODULOS VECTORES presento diversos procedimientos para manipulación de este
tipo de estructura. Creación de un vector con datos leídos, escritura de un vector que ya expliqué en guías
anteriores. Haré la explicación aquí de otros módulos también presentados en el mismo archivo anexo
BUSQUEDA DEL MAYOR ELEMENTO EN UN VECTOR – PROCEDIMIENTO PRIMERA
APROXIMACION
SE ESCOGE CUALQUIER ELEMENTO DEL VECTOR Y SE GUARDA EN UNA VARIABLE
CUALQUIERA, POSTERIORMENTE SE COMPARAN TODOS LOS ELEMENTOS DEL VECTOR CON EL
VALOR DE ESA VARIABLE. SI ALGUN ELEMENTO DEL VECTOR RESULTA MAYOR QUE EL VALOR
DE LA VARIABLE SE MODIFICA EL VALOR DE ESTA VARIABLE Y SE LE ASIGNA COMO VALOR EL
DE ESE ELEMENTO. UNA VEZ RECORRIDO TODO EL VECTOR EN LA VARIABLE AUXILIAR
QUEDARA EL VALOR DEL MAYOR ELEMENTO DEL VECTOR. EJEMPLO:
CANTIDAD DE ELEMENTOS=8 - ASUMAMOS QUE ESTE ES EL VECTOR:
34 67 42 19 2 98 11 13
ARBITRARIAMENTE ESCOJO CUALQUIERA Y GUARDO EN OTRA VARIABLE
CREO=VECTOR[5] » CREO=2 – RECORRO TODO EL VECTOR DESDE POSICION 1 HASTA 8
FOR I=1 TO CANTIDAD DO
IF VECTOR [I] › CREO THEN CREO=VECTOR [I]
VALOR DE I VALOR EN VECTOR IF VALOR DE CREO
2
1 34 CIERTO 34
2 67 CIERTO 67
3 42 FALSO
4 19 FALSO
5 2 FALSO
6 98 CIERTO 98
7 11 FALSO
8 13 FALSO
FIN RECORRIDO EN CREO TENGO EL VALOR DEL MAYOR
CONSIDERACIONES:
1) Al escoger arbitrariamente la posición 5 estoy asumiendo que el vector tiene al menos 5 valores
almacenados, lo cual no necesariamente es cierto. Lo que sí es seguro es que si el vector tiene al menos un
elemento este se almacenará en la primera posición. Con lo cual, el elemento escogido arbitrariamente
como el mayor será el de la posición 1
2) Una vez hecho todo el recorrido podré conocer el valor del mayor elemento pero no conozco que posición
ocupa en el vector, por lo que tendría que hacer un nuevo recorrido para determinar dónde está?. Entonces
se hace necesario, no solo asumir arbitrariamente un valor como el mayor sino también hay que guardar en
otra variable su posición. Escritura destructiva en la variable del valor implicará también cambio en la
variable de la posición.
Incorporando estas consideraciones en el procedimiento queda:
CREO=VECTOR[1] ; POSICION=1
FOR I=1 TO CANTIDAD DO
IF VECTOR [I] › CREO THEN BEGIN
CREO=VECTOR [I]; POSICION=I; END;
VALOR DE I VALOR EN VECTOR IF VALOR DE CREO VALOR DE POSICION
34 1
1 34 FALSO
2 67 CIERTO 67 2
3 42 FALSO
CONTINUACION TEMA ARRAY UNIDIMENSIONAL O VECTOR 2
4 19 FALSO
5 2 FALSO
6 98 CIERTO 98 6
7 11 FALSO
8 13 FALSO
FIN RECORRIDO EN CREO TENGO EL VALOR DEL MAYOR Y EN POSICION SU “POSICION”
ULTIMA CONSIDERACION:
HACIENDO EL RECORRIDO DESDE LA PRIMERA HASTA LA ÚLTIMA POSICION ESTOY HALLANDO
EL MAYOR EN TODO EL VECTOR. ES POSIBLE QUE MI BUSQUEDA NO SEA EN TODO EL VECTOR
SINO EN UN RANGO DE POSICIONES. ENTONCES INCORPORO ESE RANGO COMO PARAMETRO
PARA EL RECORRIDO EN EL VECTOR. POSICION DE ARRANQUE =DESDE, POSICION FINAL=HASTA
Y EL VALOR ARBITRARIO DEL MAYOR SERA INICIALMENTE EL ELEMENTO QUE ESTE EN LA
POSICION DE ARRANQUE – MIRAR EL PROCEDIMIENTO EN ARCHIVO ANEXO LLAMADO
MODULOS VECTORES.
PARAMETROS DEL PROCEDIMIENTO:
ENTRADA: CANTIDAD DE ELEMENTOS DEL VECTOR, EL VECTOR, POSICION INICIAL DE
BUSQUEDA, POSICION FINAL DE BUSQUEDA
SALIDA: LA POSICION DEL MAYOR ELEMENTO EN ESE RANGO DE POSICIONES DADAS
(CANTIDAD,VECTOR,DESDE,HASTA,POSICION)
SI SE INVOCA ASI: (23,A,5,12,ZZ) SE ESTA EJECUTANDO EL MODULO EN UN VECTOR LLAMADO A
QUE TIENE 23 ELEMENTOS , LA BUSQUEDA SE REALIZA DESDE LA POSICION 5 HASTA LA 12 Y LA
POSICION DEL MAYOR EN ESE RANGO DE POSICIONES SE GUARDO EN LA VARIABLE ZZ.
SI QUIERO BUSCAR LA POSICION DEL MAYOR EN:
 LA PRIMERA MITAD DEL VECTOR: DESDE=1, HASTA=CANTIDAD DIV 2
 LA SEGUNDA MITAD: DESDE=CANTIDAD DIV 2, HASTA =CANTIDAD
 EN TODO EL VECTOR: DESDE 1 , HASTA =CANTIDAD
PARA CUALESQUIERA OTROS VALORES DE POSICIONES SOLO LO INDICO RESPETANDO QUE
DESDE DEBE SER UN VALOR MENOR O IGUAL QUE HASTA EN LA EJECUCION DEL MODULO.
SI A ESTE MODULO LE CAMBIO EL OPERADOR DE RELACION MAYOR QUE POR EL DE MENOR
QUE ENTONCES EL RESULTADO SERA HALLAR LA POSICION DEL MENOR ELEMENTO DEL
VECTOR EN UN RANGO DE POSICIONES
OBSERVE QUE SOLO OBTENGO COMO RESULTADO LA POSICION DEL ELEMENTO EN CUESTION
PORQUE CON LA POSICION TENGO DOS INFORMACIONES, CUANTO VALE? Y DONDE ESTA?.
RESULTADO DEL EJEMPLO: POSICION=6 – ENTONCES: DONDE ESTA? EN LA POSICION 6; CUANTO
VALE VECTOR [POSICION] ? BUSQUE EL VALOR DE VECTOR [6] EN EL EJEMPLO. ES EL MAYOR
VALOR???
 SUPONGAMOS QUE PARTIENDO DE ESTE VECTOR:
1 2 3 4 5
QUIERO OBTENER ESTE:
5 4 3 2 1
QUE HICE? VOLTEAR EL VECTOR?
1 2 3 4 ….. …… N-3 N-2 N-1 N

ELEMENTO POSICION SE INTERCAMBIA CON ELEMENTO POSICION


1 N
CONTINUACION TEMA ARRAY UNIDIMENSIONAL O VECTOR 3
2 N-1
3 N-2
4 N-3
:::::: :::::
VEAMOS LA FORMA GENERAL:
I N-(I-1) – ELIMINANDO PARENTESIS N-I+1
SI EL VECTOR TIENE 3 ELEMENTOS ESTE CICLO SE HARA UNA VEZ. SI EL
VECTOR TIENE 5 ELEMENTOS EL CICLO SE HARA 2 VECES (1 CON 5 y 2 CON 4).
CONCLUSION: VECES ES FUNCION DIRECTA DE LA CANTIDAD DE ELEMENTOS
DEL VECTOR. ESPECIFICAMENTE (N DIV 2) VECES, CON LO CUAL EL CICLO
(VALORES DE I) SE HARA DE 1 A (N DIV 2) VECES
PARAMETROS DEL PROCEDIMIENTO:
ENTRADA: CANTIDAD DE ELEMENTOS DEL VECTOR, EL VECTOR
SALIDA: EL VECTOR (MODIFICADO)
 Si se desea eliminar un elemento en particular de un vector, lo usual es identificar la posición del elemento
en cuestión (LLAMEMOS K) y desplazar los restantes elementos una posición a la izquierda, con lo cual
el número total de elementos del vector se reduce en 1. Por ejemplo:
Vector original, tiene 5 elementos 782 400 23 17 56 Se desea eliminar el 400 (posición 2)

Vector resultante, tiene 4 elementos 782 23 17 56

ELEMENTO DE POSICION PASA A POSICION


3 2
4 3
5 4
:::: :::
VEAMOS LA FORMA GENERAL:
I+1 I
PARA VALORES DE I DESDE K HASTA (N-1)
PARAMETROS DEL PROCEDIMIENTO:
ENTRADA: CANTIDAD DE ELEMENTOS DEL VECTOR, EL VECTOR, POSICION DEL ELEMENTO QUE
SE DESEA ELIMINAR
SALIDA: EL VECTOR (MODIFICADO), LA CANTIDAD DE ELEMENTOS DEL VECTOR (MODIFICADO)
VER PROCEDIMIENTO EN ARCHIVO ANEXO MODULOS VECTORES
CONTINUACION TEMA ARRAY UNIDIMENSIONAL O VECTOR 4

 Si se desea insertar un elemento en un vector que se encuentra “ordenado”, lo usual es identificar la


posición que ocuparía el elemento en cuestión (llamemos K) y desplazar los restantes elementos una
posición a la derecha antes de realizar la inserción, con lo cual el número total de elementos del vector se
aumenta en 1. Por ejemplo:
Vector original, tiene 5 elementos y esta ordenado 17 23 56 82 400 Se desea insertar un 40 (VALOR)

Vector resultante, tiene 6 elementos, se deben desplazar los elementos antes de hacer la
17 23 40 56 82 400
inserción

ELEMENTO DE POSICION PASA A POSICION


5 6
4 5
3 4
:::: :::
VEAMOS LA FORMA GENERAL:
I-1 I
PARA VALORES DE I DESDE N BAJANDO A (K+1)

PARAMETROS DEL PROCEDIMIENTO:


ENTRADA: CANTIDAD DE ELEMENTOS DEL VECTOR, EL VECTOR, VALOR DEL ELEMENTO QUE SE
DESEA INSERTAR, POSICION DONDE SE UBICARIA ESE ELEMENTO EN EL VECTOR
SALIDA: EL VECTOR (MODIFICADO), LA CANTIDAD DE ELEMENTOS DEL VECTOR (MODIFICADO)
VER PROCEDIMIENTO EN ARCHIVO ANEXO MODULOS VECTORES

También podría gustarte