Anda di halaman 1dari 42

CLASE VECTOR Y TECNICAS ALGORITMICAS

UNIDAD III
Ing. Mario M. Lpez Winnipeg
CONTENIDO
LA CLASE VECTOR Y TECNICAS ALGORITMICAS
(ARREGLO DE UNA DIMENSIN)
Definicin y estructura.
Referencias al arreglo de una dimensin.
secuenciales, randmicas y mixtas.
Aplicaciones mediante referencia secuencial de una instancia o un objeto de la
clase vector.
Bsqueda secuencial.
Ordenamiento por intercambio.
Ordenamiento Por seleccin.
Ordenamiento por conteo y el manejo de objetos auxiliares
Ordenamiento Burbuja.
Ordenamiento por insercin
Shell Sort.
Quick Sort.
Bsqueda binaria.

CLASE VECTOR Y TECNICAS ALGORITMICAS


DEFINICION Y ESTRUCTURA
Un vector es comnmente conocido como lista o columna, de datos
de mismo tipo a los que colectivamente nos referimos mediante un
nombre.
Deben cumplir lo siguiente:
1) Compuesto por un numero finito de elementos
2) El Tamao fijo debe ser conocido en tiempo de compilacin
3) Homogneo por que todos los elementos son del mismo tipo.
4) Cada elemento se puede procesar como si fuese una simple
variable ocupando una direccin de memoria.

n elementos

1 n
CLASE VECTOR Y TECNICAS ALGORITMICAS
EJEMPLO
DEFINICION EN DELPHI
VAR
V : array [1.. 10] of integer;
A: array[1..20 ] of cnumeronatural;
s : array[1..30] of Persona;
.
V[3]:=v[3] +1;
n elementos
A[2].asignarvalor(345);
S[3].nombre =Juanita;
1 n
CLASE VECTOR Y TECNICAS ALGORITMICAS
REFERENCIAS SECUENCIALES RANDOMICAS
Y MIXTAS
SECUENCIALES
Cuando uno accede al contenido del vector de manera ordenada vale
decir empezando en la posicin 1,2,3,4,5. N
RANDOMICAS
Cuando se accede al contenido del vector sin ningn orden vale decir
de forma aleatoria.
MIXTAS
Esta forma de referencia a las celdas del vector conbina las dos formas
anteriores.
n elementos

1 n
CLASE VECTOR Y TECNICAS ALGORITMICAS
LABORATORIO
Program usandovectores;
Var Definiendo
elementos:array[ 1.. 100 ] of integer;
n,i:word; Dimensionando
begin
writeln(Digite la dimensin );
Readln(N);
for i:=1 to n do Cargando
readln(elementos[ i ]);
for i:= 1 to n do
write( elementos[i]:4); Mostrando
readln;
End.

CLASE VECTOR Y TECNICAS ALGORITMICAS


Aplicaciones mediante referencia secuencial de una
instancia o un objeto de la clase vector.

Bsqueda secuencial.
Ordenamiento por intercambio.
Ordenamiento Por seleccin.
Ordenamiento por conteo y el manejo de
objetos auxiliares
Ordenamiento Burbuja.
Ordenamiento por insercin
Shell Sort.
Quick Sort.
Bsqueda binaria.

CLASE VECTOR Y TECNICAS ALGORITMICAS


Definicin de la Clase Vector
unit UCVector;
Interface
uses SysUtils ;
Const
MaxE = 1024;
Type
ConjuntoElementos = Array[1..MaxE] of Integer;
CEMVector = Class(Exception);
CVector = Class
Private
N : Word;
Elementos : ConjuntoElementos;

Public
Constructor Crear;
Procedure Dimensionar( Dim : Word );
Procedure Poner( Pos: Word; Elemento : Integer);
Function Elemento( Pos : Word ): Word ;
Function Dimension : Word;
Function ComoString : String;

End;

CLASE VECTOR Y TECNICAS ALGORITMICAS


Definicin de la Clase Vector
Constructor Cvector.crear;
Begin
N: =0;
End;
Procedure cvector.Dimensionar( Dim : Word);
Begin
// aumentar codigo que controle si dim < MAXE
n:=dim;
End;
Procedure Cvector.poner( posi:word; elem: integer);
Begin
If posi>0 and posi<= N then
elementos[ posi ] = elem
else
// llamar a error indice fuera de rango
End;

CLASE VECTOR Y TECNICAS ALGORITMICAS


Definicin de la Clase Vector
Function cvector.Dimension:Word;
Begin
Dimension:=n;
End;
Function cvector.elemento( posi:word):word;
Begin
If posi>0 and posi<= N then
// retornar el valor de elementos[ posi ]
else
// llamar a error indice fuera de rango
End;

CLASE VECTOR Y TECNICAS ALGORITMICAS


Definicin de la Clase Vector
Function Cvector.comostring:String;
Var s:string; I : integer;
Begin
s:=;
for I := 1 to n do
s:= s +elementos[i]+ ;
End;

CLASE VECTOR Y TECNICAS ALGORITMICAS


LABORATORIO
Program usandoclasevector;
Uses . Cvector;
Var
Vec : Cvector;
Definiendo
I,k: Integer;
Begin Creando
vec:=cvector.crear;
Writeln(Digite la dimension ); Dimensionando
Readln(K);
vec.dimensionar(k);
for i:= 1 to vec.dimension do
Begin
readln(k);
vec.poner(I,k);
Cargando
end;

writeln (vec.comostring);
readln; Mostrando
End.

CLASE VECTOR Y TECNICAS ALGORITMICAS


LABORATORIO constructor aplicacion.crear;
begin
program creandoaplicacion; vec:=cvector.crear;
end;
Uses . Cvector; procedure aplicacion.dimesionar;
var k: integer;
Type begin
Writeln( digite la dimension ):
aplicacion = class readln(k);
private vec.dimensionar(k);
end;
vec: cvector; procecure aplicacion.cargar;
var
public I,k:integer;
begin
constructor crear; for i:= 1 to vec.dimension do
begin
procedure Dimensionar; readln(k);
procedure Cargar; vec.poner(I,k); Var
end; a:aplicacin;
procedure mostrar; end;
. Begin
end; /// completer codigo
begin a:=aplicacin.crear;
End. a.dimensionar;
a.cargar;
a.mostrar;
End.

CLASE VECTOR Y TECNICAS ALGORITMICAS


BUSQUEDA SECUENCIAL
n elementos

X X X X X X X X
1 n

25

CLASE VECTOR Y TECNICAS ALGORITMICAS


BUSQUEDA SECUENCIAL
n elementos

X X X X 25 X X X
1 n

25

CLASE VECTOR Y TECNICAS ALGORITMICAS


BUSQUEDA SECUENCIAL

Function CVector.BusquedaSecuencial( Elemento : Integer ) : Word;


Var
Pos : Word;
Begin
Pos := 1;
While( Pos<= Dimension )and( Elementos[ Pos ]<> Elemento )do
Inc( Pos );
If( Pos > Dimension )Then
Pos := 0;
Result := Pos;
End;

CLASE VECTOR Y TECNICAS ALGORITMICAS


ORDENAMIENTO POR INTERCAMBIO
8 elementos
18 17 16 15 14 13 12 1
1 8
I=1 J=2 Si 17 < 18 entonces cambiar
8 elementos
17 18 16 15 14 13 12 1
1 8
I=1 J=3 Si 16 < 17 entonces cambiar
8 elementos
16 18 17 15 14 13 12 1
1 8
I=1 J=4 Si 15 < 16 entonces cambiar
8 elementos
15 18 17 16 14 13 12 1
1 8
CLASE VECTOR Y TECNICAS ALGORITMICAS
ORDENAMIENTO POR INTERCAMBIO
8 elementos
I=1 J=5
Si 14 < 15 entonces cambiar 15 18 17 16 14 13 12 1
1 8
8 elementos
I=1 J=6
si 13 < 14 entonces cambiar 14 18 17 16 15 13 12 1
1 8
I=1 J=7 8 elementos
Si 12 < 13 entonces cambiar
13 18 17 16 15 14 12 1
1 8
8 elementos
I=1 J=8
Si 1 < 12 entonces cambiar 12 18 17 16 15 14 13 1
1 8
8 elementos
1 18 17 16 15 14 13 12
1 8

CLASE VECTOR Y TECNICAS ALGORITMICAS


ORDENAMIENTO POR INTERCAMBIO
8 elementos
I=2 J=3
Si 17 < 18 entonces cambiar 1 18 17 16 15 14 13 12
1 8 elementos 8
I=2 J=4
Si 16 < 17 entonces cambiar 1 17 18 16 15 14 13 12
1 8 elementos 8
I=2 J=5
Si 15 < 16 entonces cambiar 1 16 18 17 15 14 13 12
1 8 elementos 8
I=2 J=6
Si 14 < 15 entonces cambiar 1 15 18 17 16 14 13 12
1 8 elementos 8
I=2 J=7
Si 13 < 14 entonces cambiar 1 14 18 17 16 15 13 12
I=2 J=8 1 8 elementos 8
Si 12 < 13 entonces cambiar 1 13 18 17 16 15 14 12
1 8 elementos 8
1 12 18 17 16 15 14 13
1
CLASE VECTOR Y TECNICAS ALGORITMICAS 8
ORDENAMIENTO POR INTERCAMBIO

Procedure CVector.OrdenarIntercambio;
Var
i , j: Word;
Begin
For i := 1 to Dimension-1 do
For j := i+1 to Dimension do
if( Elementos[ j ] < Elementos[ i ] )then
Intercambiar( j , i );
End;

CLASE VECTOR Y TECNICAS ALGORITMICAS


ORDENAMIENTO POR SELECCION
4 elementos
5 8 4 2
1 MAXE
se recorre el arreglo, se selecciona el elemento menor y se intercambia este elemento con el de la primera posicin

4 elementos
2 8 4 5
1 MAXE
En la siguiente pasada se hace lo mismo, pero ahora se busca desde la segunda posicin hasta el final el menor. Se
intercambia ste menor con lo que est en la segunda posicin.

4 elementos
2 4 8 5
1 MAXE

CLASE VECTOR Y TECNICAS ALGORITMICAS


ORDENAMIENTO POR SELECCION
4 elementos
2 4 8 5
1 MAXE
Se repite para las siguientes posiciones, hasta la posicin (n-1)

4 elementos
2 4 5 8
1 MAXE

CLASE VECTOR Y TECNICAS ALGORITMICAS


ORDENAMIENTO POR SELECCION

Procedure cvector.ordenarSeleccion;
var
i,j,menor : integer ;
Begin
for i:= 1 hasta N do
begin
menor:= i;
For j := i + 1 to N Do
If (elementos[j] < elementos[menor]) entonces
menor :=j;

Intercambiar(i, menor);
end;
End;

CLASE VECTOR Y TECNICAS ALGORITMICAS


ORDENAMIENTO POR INSERCION

Implemente el mtodo cvector.ordenarinsercion;


Tiene un valor de +10 -10

CLASE VECTOR Y TECNICAS ALGORITMICAS


Ordenamiento por conteo y el manejo de objetos
auxiliares
10 10 5 10 20 5 13 10
A

Count
2 4 1 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

CLASE VECTOR Y TECNICAS ALGORITMICAS


Ordenamiento por conteo y el manejo de objetos
auxiliares
A
10 10 5 10 20 5 13 10
B

10
10
5 10
Count 5 10 13 m=20 20
2 4 1 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
0 0 0 0 2 2 2 2 2 6 6 6 7 7 7 7 7 7 7 8 8

CLASE VECTOR Y TECNICAS ALGORITMICAS


Ordenamiento por conteo y el manejo de objetos
auxiliares
10
A
10 10 5 10 20 5 13 10
B
10
10
5 10
Count 5 10 13 m=20 20
0 0 0 0 2 2 2 2 2 6 6 6 7 7 7 7 7 7 7 8 8

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

para i = 8 A[ count [ b[ i ] ] ] = b[i ]

CLASE VECTOR Y TECNICAS ALGORITMICAS


Ordenamiento por conteo y el manejo de objetos
auxiliares
10
A
10 10 5 10 20 5 13 10
B

Count
0 0 0 0 2 2 2 2 2 6 6 7 7 7 7 7 7 7 9 9
5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

para i = 8 A[ count [ b[ i ] ] ] = b[i ]

CLASE VECTOR Y TECNICAS ALGORITMICAS


Ordenamiento por conteo y el manejo de objetos
auxiliares
10 13
A
10 10 5 10 20 5 13 10
B

Count
0 0 0 0 2 2 2 2 2 6 6 7 7 7 7 7 7 8 8
5 6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

para i = 7 A[ count [ b[ i ] ] ] = b[i ]

CLASE VECTOR Y TECNICAS ALGORITMICAS


Ordenamiento por conteo y el manejo de objetos
auxiliares
5 10 13
A
10 10 5 10 20 5 13 10
B

Count
0 0 0 0 2 2 2 2 6 6 7 7 7 7 7 7 8 8
1 5 6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

para i = 6 A[ count [ b[ i ] ] ] = b[i ]

CLASE VECTOR Y TECNICAS ALGORITMICAS


Ordenamiento por conteo y el manejo de objetos
auxiliares
5 10 13 20
A
10 10 5 10 20 5 13 10
B

Count
0 0 0 0 2 2 2 2 6 6 7 7 7 7 7 7 8
1 5 6 7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

para i = 5 A[ count [ b[ i ] ] ] = b[i ]

CLASE VECTOR Y TECNICAS ALGORITMICAS


Ordenamiento por conteo y el manejo de objetos
auxiliares
5 10 10 13 20
A
10 10 5 10 20 5 13 10
B

Count
0 0 0 0 2 2 2 2 6 6 7 7 7 7 7 7 8
1 4 6 7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

para i = 4 A[ count [ b[ i ] ] ] = b[i ]

CLASE VECTOR Y TECNICAS ALGORITMICAS


Ordenamiento por conteo y el manejo de objetos
auxiliares
5 5 10 10 13 20
A
10 10 5 10 20 5 13 10
B

Count
0 0 0 0 2 2 2 2 6 6 7 7 7 7 7 7 8
0 4 6 7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

para i = 3 A[ count [ b[ i ] ] ] = b[i ]

CLASE VECTOR Y TECNICAS ALGORITMICAS


Ordenamiento por conteo y el manejo de objetos
auxiliares
5 5 10 10 10 13 20
A
10 10 5 10 20 5 13 10
B

Count
0 0 0 0 2 2 2 2 6 6 7 7 7 7 7 7 8
0 3 6 7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

para i = 2 A[ count [ b[ i ] ] ] = b[i ]

CLASE VECTOR Y TECNICAS ALGORITMICAS


Ordenamiento por conteo y el manejo de objetos
auxiliares
5 5 10 10 10 10 13 20
A
10 10 5 10 20 5 13 10
B

Count
0 0 0 0 2 2 2 2 6 6 7 7 7 7 7 7 8
0 2 6 7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

para i = 1 A[ count [ b[ i ] ] ] = b[i ]

CLASE VECTOR Y TECNICAS ALGORITMICAS


Ordenamiento por conteo y el manejo de objetos auxiliares
Procedure cvector.ordenarConteo;
Var
i,m: longInt;
b:array[1..maxe] of lontint;
count array[1..100000] of longint;
BEGIN
M:=0;
FILLCHAR(COUNT,SIZEOF(COUNT),0);
for i:= 1 to N do
Begin for i:=2 to M do
count[ elementos[ i ]]:= count[ elementos[i]] +1; count[i]:=count[i] + count[i-1];
if elementos[i] > m then m:=a[i];
end; b:=elementos;
for i:= n downto 1 do
begin
elementos[ count [ b[ i ]] ] := b[i];
count[ b [i] ]:= count[ b[i]] -1;
end;

END;

CLASE VECTOR Y TECNICAS ALGORITMICAS


Ordenamiento Burbuja
Procedure CVector.OrdenarBurbuja;
Var
i , j , Aux : Word;
Begin
For i := 1 To Dimension-1 Do
For j := 1 To Dimension-i Do
If( Elementos [ j ] >Elementos [ j+1 ] )Then
Begin
Aux := Elementos [ j ];
Elementos [ j ] := Elementos [ j+1 ];
Elementos [ j+1 ] := Aux;
End;
End;

CLASE VECTOR Y TECNICAS ALGORITMICAS


Procedure CVector.OrdenarShell;
Ordenamiento Shell Var
Inter , i , j , k : Integer;
Begin
Inter := Dimension div 2;
While( Inter > 0 )Do
Begin
For i := (Inter + 1) to Dimension do
Begin
j := i - Inter;
While( j > 0)do
Begin
k := j + Inter;
If( Elementos [ j ]<=Elementos [ k ])then
j := 0
Else
Intercambiar( j, k);
j := j - Inter;
End;
End;
Inter := Inter div 2;
End;
End;

CLASE VECTOR Y TECNICAS ALGORITMICAS


Ordenamiento Quick

Implementar el algoritmo de Quick Sort


Tiene un valor de +10 -10

CLASE VECTOR Y TECNICAS ALGORITMICAS


Bsqueda Binaria
En la grafica puede ver que se busca el 8 en un vector de dimensin 7.

Paso 0: Definir el rea de bsqueda e; ini=1 y fin =7


Paso 1: Encontrar el centro del rea definida (fin + ini) div 2 (posicin central)
Paso 2: Verificar si el valor buscado esta en el centro de rea de bsqueda y terminar.
Paso 3: Si no esta en el centro el valor buscado, definir nueva rea de bsqueda.,
preguntado si el elemento a buscar se encuentra a la derecha o izquierda del centro.
Si se encuentra a la derecha defina nueva rea de bsqueda (ini=posicin central +1 y
fin queda igual) caso contrario defina nueva rea de buqueda( fin = posicin central -
1 y ini queda igual)
Repertir los pasos 1 al 3 hasta encontrar elemento o que ini > fin

CLASE VECTOR Y TECNICAS ALGORITMICAS


Bsqueda Binaria
Function CVector.BusquedaBinaria( While (Ini <= Fin ) and ( not Sw ) Do
Elemento: Integer ) : Word; Begin
Var Media :=( Fin + Ini )div 2;
Ini , Fin , Media :word; If( Elemento = Elementos[ Media ]
Sw:boolean; )Then
Sw:=true
Begin
Else
Ini := 1; If( Elemento < elementos[ Media ]
Fin := Dimension; )Then
Sw := False; Fin := Media - 1
Media := 0; Else
Ini := Media + 1;
End;
Result := Media;
End;

CLASE VECTOR Y TECNICAS ALGORITMICAS


Laboratorio

Crear
Dimensionar

Poner

Secuencial

Shell

Mostrar

Proyecto que tiene un valor de +20 -20


CLASE VECTOR Y TECNICAS ALGORITMICAS

Anda mungkin juga menyukai