Está en la página 1de 8

Algoritmos y estructuras de

datos
Operaciones sobre arrays
Todas las operaciones que se resumen a continuacin trabajan sobre un array de valores
enteros cuyo tipo de datos y capacidad se define en la siguiente seccin type.
const
CAPACIDAD = 50;
type
TArray = array[1..CAPACIDAD] of integer;

Agregar un elemento al array


Agrega el valor de x en la primer posicin del array que no est siendo usada.
agregar
var arr:TArray; var len:integer; x:integer
len len+1
arr[len] x

R
Agrega un elemento al final del array

procedure agregar(var arr:TArray; var len:integer; x:integer);


begin
len:=len+1;
arr[len]:=x;
end;

Recorrer y mostrar el contenido de un array


Recorre el array mostrando por pantalla el valor de cada uno de sus elementos.

mostrar
arr:TArray; len:integer
for i:=1 to len
arr[i]

R
Recorre el array y muestra el valor de sus elementos

procedure mostrar(var arr:TArray; len:integer);


var i:integer;
begin
for i:=1 to len do begin
writeln(arr[i]);
end;
end;

Determinar si el array contiene un determinado valor


Recorre el array arr para determinar si contiene al menos un elemento cuyo valor
coincida con el valor de x. Retorna un entero que indica la posicin en la que el array
contiene a x o un valor negativo para indicar que el elemento buscado no se encontr.
buscar: integer
arr:TArray; len:integer; x:integer
i1
i<=len and arr[i]<>x
i i+1

i<=len
buscar i

buscar -1

R
Recorre el array para determinar si contiene o no un valor determinado

function buscar(var arr:TArray; len:integer; x:integer):integer;


var i:integer;
begin
i:=1;
while( arr[i]<>x ) do begin

i:=i+1;
end;
if( i<=len ) then begin
buscar:=i;
end else begin
buscar:=-1;
end;
end;

Eliminar un valor del array


Recorre el array para buscar y eliminar el primer elemento cuyo valor sea igual a x. Si
x no est contenido en arr entonces no hace nada.
eliminar
var arr:TArray; var len:integer; pos:integer
for i:=pos to len-1
arr[i+1] arr[i]
len len-1

R
Elimina el primer elemento que contiene un valor determinado

procedure eliminar(var arr:TArray; var len:integer; pos:integer);


var i:integer;
begin
for i:=pos to len-1 do begin
arr[i]:=arr[i+1];
end;
len:=len-1;
end;

Insertar un valor en una posicin determinada


Inserta el valor x en la posicin pos del array desplazando hacia abajo a los
elementos contenidos a partir de la posicin pos+1.

insertar
var arr:TArray; var len:integer;
x:integer; pos:integer
for i:=len downto pos
arr[i+1] arr[i]
arr[pos] x
len len+1

R
Inserta un elemento en el array en una posicin determinada

procedure insertar(var arr:TArray; var len:integer


; x:integer; pos:integer);
var i:integer;
begin
for i:=len downto pos do begin;
arr[i+1]:=arr[i];
end;
arr[pos]:=x;
len:=len+1;
end;

Insertar un valor respetando el ordenamiento del array


Inserta el valor x en el array respetando el criterio de ordenamiento. En esta
implementacin se respeta el orden de precedencia de los nmeros enteros.
insertarOrdenado
var arr:TArray; var len:integer;
x:integer
(i<=len) and (arr[i]<=x)
i i+1
insertar(arr,len,x,i)
insertarOrdenado i

R
Inserta un valor respetando el criterio de precedencia del array

function insertarOrdenado(var arr:TArray


; var len:integer; x:integer):integer;
var i:integer;
begin
i:=1;
while( (i<=len) and (arr[i]<=x) ) do begin
i:=i+1;
end;
insertar(arr,len,x,i);
insertarOrdenado:=i;
end;

Insertar un valor solo si el array an no lo contiene


Inserta el valor x en el array solo si est an no esta contenido. En este caso asignar
false al parmetro enc y retornar la posicin en la que el valor fue insertado. Si el
array ya contena el valor entonces simplemente asignar true al parmetro enc, no
insertar nada y retornar la posicin en la que el array lo contiene..
buscarEInsertarOrdenado
var arr:TArray; var len:integer;
x:integer; var enc:boolean
i1
(i<=len) and (arr[i]<x)
i i+1
enc (i<=len) and (arr[i]=x)
not enc
insertar(arr,len,x,i)
buscarEInsertarOrdenado i

R
Inserta un valor que ser nico en el array

function buscarEInsertarOrdenado(var arr:TArray; var len:integer


; x:integer; var enc:boolean):integer;
var i:integer;
begin
i:=1;
while( (i<=len) and (arr[i]<x) ) do begin
i:=i+1;
end;
enc:=(i<=len) and (arr[i]=x);

if( not enc ) then begin


insertar(arr,len,x,i);
end;
buscarEInsertarOrdenado:=i;
end;

Ordenar los elementos contenidos en un array


Ordena el contenido de un array a travs del algoritmo de la burbuja.
ordenar
var arr:TArray; len:integer
ordenado false
not ordenado
ordenado true
for i:=1 to len-1
arr[i]>arr[i+1]
aux arr[i]
arr[i] arr[i+1]
arr[i+1] aux
ordenado false

R
Algoritmo burbuja para ordenar los elementos contenidos en un array

procedure ordenar(var arr:TArray; len:integer);


var ordenado:boolean;
var i,aux:integer;
begin
ordenado:=false;
while( not ordenado ) do begin
ordenado:=true;
for i:=1 to len-1 do begin
if( arr[i]>arr[i+1] ) then begin
aux:=arr[i];
arr[i]:=arr[i+1];
arr[i+1]:=aux;
ordenado:=false;
end;
end;
end;

end;

Bsqueda binaria sobre un array


Determina si un array (previamente ordenado) contiene o no un determinado valor. La
funcin retorna la posicin en la cual el array contiene al valor que estamos buscando o,
si no lo contiene, retorna (en negativo) la posicin en donde lo debera contener.
busquedaBinaria
var arr:TArray; len:integer; x:integer
i1
j len
k (i+j) div 2
enc false
(not enc) and (i<=j)
arr[i]>x
j k-1

arr[i]<x
i k+1

enc true

k (i+j) div 2

enc
busquedaBinaria k

busquedaBinaria -(k+1)

R
Bsqueda binaria sobre un array previamente ordenado

function busquedaBinaria(var arr:TArray


; len:integer; x:integer):integer;
var i,j,k:integer;
var enc:boolean;
begin
i:=1;
j:=len;
k:= (i+j) div 2;
enc:=false;
while( (not enc) and (i<=j) ) do begin
if( arr[k]>x ) then begin

j:=k-1;
end else begin
if( arr[k]<x ) then begin
i:=k+1;
end else begin
enc:=true;
end;
end;
k:= (i+j) div 2;
end;
if( enc ) then begin
busquedaBinaria:=k;
end else begin
busquedaBinaria:=-(k+1);
end;
end;