Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TT
EE
M
M
A
A
66
6.1. Arrays
6.2. Cadenas de caracteres
6.3. Registros
6.4. Bsqueda y ordenacin
Fin
Imprimir
contadores
Leer Seleccin
No
1Selecc.4
No
Seleccin
!=0
Leer Seleccin
Inicializar
contadores
Inicio
Si
Si
Actualizar
Contador
bebida ha seleccionado?:)
Leer ( seleccion )
FINMIENTRAS
Escribir (Solo Sin Azcar: )
Escribir ( soloSin )
....
FIN Cafetera
Concepto de Array
Array = Estructura de datos
Concepto de Array
El tipo array:
Formado por todos los posibles arrays de tipo base T que se
puedan formar.
Cardinalidad:
#Array = (#TipoBase)#Tipondice
Declaracin:
Tipondice
TIPOS
TipoBase <TipoArray> [IndInicial..IndFinal]
Concepto de Array
VARIABLES
<TipoArray>
nuevoArray
EJEMPLO
TIPOS
R TipoMes [1..31]
Concepto de Array
VARIABLES
TipoMes mesHoras
A R R A Y m esH o ra s
Indice: 1
26 27
28 31
.......
C om po nente 1
C om ponente 31
C o m p onente 2
m esH o ras[3 ]
Concepto de Array
Operaciones con Arrays:
1.- Asignacin.
2.- Lectura / escritura.
3.- Recorrido ( Acceso secuencial ).
4.- Modificacin.
5.- Ordenacin.
6.- Bsqueda.
Introduccin a los Computadores
Concepto de Array
Asignacin
Asignacin de un elemento:
mesHoras[20] = 7.0
Concepto de Array
Asignacin de Arrays
VAR
TipoMes mes, copiaMes
INICIO
copiaMes = mes
FIN
Es equivalente a:
PARA posicion = 1 HASTA 31 HACER
copiaMes[posicion]= mes[posicion]
FINPARA
Concepto de Array
Lectura / Escritura
Normalmente se realizan haciendo uso de estructuras
repetitivas, aunque pueden intervenir estructuras
selectivas:
PARA posicion = 1 HASTA 31 HACER
SI posicion MOD 2 != 0 ENTONCES
Leer(mes[posicion])
FINSI
FINPARA
Introduccin a los Computadores
Concepto de Array
Acceso Secuencial
Realizacin de una accin genrica sobre todos los
elementos del vector:
Ejemplo 1: Escritura de un array
PARA posicion = 1 HASTA 31 HACER
Escribir (mes[posicion])
FINSI
Concepto de Array
Ejemplo 3: Calculo de la suma y de la media de los valores del Array puntos.
ALGORITMO MediaPuntos
TIPOS
Z TPuntos [1..30]
VAR
Aadir
TPuntos
puntos
subprogramacin
Z media, suma, componente
INICIO
suma = 0
PARA componente = 1 HASTA 30 HACER
Leer(puntos[componente])
suma = suma + puntos [componente]
FINPARA
media = suma DIV 30
FIN MediaPuntos
Concepto de Array
Solucin al problema de la mquina de caf:
Tipos de Bebidas:
1.- Caf solo, sin azcar
2.- Caf solo, con azcar
3.- Caf con leche, sin azcar
4.- Caf con leche, con azcar
Concepto de Array
Representacin mediante un vector
1
3 4
fre c u e n c ia s
Caf solo, sin azcar
Caf solo, con azcar
Caf con l., sin azcar
Caf con l.,con azcar
T solo, sin azcar
T solo, con azcar
T con l., sin azcar
T con l., con azcar
Concepto de Array
ALGORITMO Cafetera
CONST
N NUMERO = 8
TIPOS
N TArrFreq [1..NUMERO]
VAR
TArrFreq frecuencia
N bebida
INICIO
// Inicializacin de las frecuencias
PARA
bebida=1
HASTA
NUMERO
HACER
frecuencia[bebida] = 0
FINPARA
Escribir (Que nmero de bebida ha
seleccionado? (0 para acabar): )
Leer(bebida)
MIENTRAS bebida != 0 HACER
SI (bebida >=1)Y(bebida<=NUMERO)
ENTONCES
frecuencia[bebida] =
frecuencia[bebida] +1
FINSI /* Este SI evita el ndice
fuera de rango */
Escribir (Que nmero de
bebida ha seleccionado: )
Leer(bebida)
FINMIENTRAS
/* impresin de los resultados
obtenidos */
FIN Cafetera
Concepto de Array
Problemas comunes al trabajar con arrays:
1.- Inicializacin.
2.- Indice fuera de rango.
Arrays en C++
Declaracin de variables:
0 1 2
float vector[3];
float vector[3] = {17.3 , 3.5 , 7.0};
Declaracin de tipos:
typedef float TVector [3];
TVector vector;
Introduccin a los Computadores
Arrays en C++
Uso de arrays como parmetros
typedef int TVector[20];
void leerVector (TVector v, int elementos)
Grupos:
Bidimensionales
Multidimensionales
In d ic e :
M -2
M -1 M
1
2
.
.
.
.
.
.
.
.
.
T IP O S
N T E j e m p lo [ 1 ..N ] [ 1 ..M ]
Introduccin a los Computadores
N T M a t riz [ 1 . . 5 ] [ 1 . . 6 ]
V A R IA B L E S
T M a t r iz m
F ila 1
11
12
13
14
15
16
F ila 2
21
22
23
24
25
26
F ila 3
31
32
33
34
35
36
F ila 4
41
42
43
44
45
46
F ila 5
51
52
53
54
55
56
C o lu m n a 6
C o lu m n a 5
C o lu m n a 4
C o lu m n a 3
C o lu m n a 2
C o lu m n a 1
Tabla
Matriz
Introduccin
Introduccinaalos
losComputadores
Computadores
INICIO
Escribir(Escribe los valores
de
la matriz, fila a fila: )
PARA fi = 1 HASTA MaxFil HACER
PARA co = 1 HASTA MaxCol HACER
Leer(a[fi][co])
FINPARA
FINPARA
/* Suma de filas */
PARA fi = 1 HASTA MaxFil HACER
suma = 0
PARA co = 1 HASTA MaxCol HACER
suma = suma + a[fi][co]
FINPARA
b[fi] = suma
FINPARA
/* Escribir la matriz */
PARA fi = 1 HASTA MaxFil HACER
PARA co = 1 HASTA MaxCol HACER
Escribir(a[fi][co])
FINPARA
Escribir(b[fi], \n)
FINPARA
// Presentacin de resultados
FIN Multiplicacin
po esc
PARA fil = 1 HASTA totFil HACER
r u ala
na r d
PARA col = 1 HASTA totCol HACER
col e u
um na
suma = 0.0
na fila
de
PARA k = 1 HASTA filCol HACER
B
suma = suma + mA[fil][k] * mB[k][col]
FINPARA
result[fil][col] = suma
FINPARA
FINPARA
DEVOLVER result
FIN ProductoMat
Equivale a:
R TArray3D[1..MaxInd1]
[1..MaxInd2][1..MaxInd3]
Array Tridimensional
N TArray3D [1..Max1][1..Max2][1..Max3]
Pr
o
fu
nd
id
a
F
i
l
a
s
Columnas
Introduccin a los Computadores
Cadenas de Caracteres
Necesidad de las Cadenas de Caracteres?
Definicin: Secuencia de cero o ms smbolos.
Longitud: Nmero de caracteres que contiene.
Ejemplos: 12 de octubre de 1.492
Por fin es Viernes 123
Cadenas de Caracteres
Delimitador? Usaremos el CHR(0)
Subcadena?
\0
Ejemplos:
12 de
viernes
Cadenas de Caracteres
Representar cadenas de caracteres?
Mediante un vector de caracteres
Ejemplo:
CONST
N LONGITUD = 17
TIPOS
C TCadena [1..LONGITUD]
VAR
TCadena cadena
Cadenas de Caracteres
Estado inicial de la variable cadena
# . /
g 5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Uno de los posibles estados iniciales del vector cadena
Variable indefinida:
Cuando se declara una variable cualquiera, no se puede
hacer ninguna suposicin sobre el contenido de la variable.
Introduccin a los Computadores
Cadenas de Caracteres
Definicin de la variable cadena de caracteres:
Para ello deberemos situar en la primera
posicin de la misma, el delimitador CHR(0)
que representaremos grficamente por:
Cadenas de Caracteres
Ejemplo: Definicin de la variable cadena.
cadena[1] = CHR(0)
g # . /
g 5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
El vector Cadena est vaco.
Cadenas de Caracteres
El final de una cadena de caracteres lo
marcaremos con el delimitador.
Ejemplo:
cadena[12] = CHR(0)
o g
9 10 11 12 13 14 15 16 17
Cadena de Caracteres
Cadenas demasiado grandes: Ignorar los caracteres sobrantes.
Ejemplo: Esta
E s t a
c a d e n a
e s
t g
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Cadenas de Caracteres
LECTURA
CONST
C RETORNOCARRO = CHR(13)
C TERMINADOR
= CHR(0)
N LONGITUD
= 100
TIPOS
C TCadena [1..LONGITUD]
componente = 1
Leer(caracter)
MIENTRAS (componente < LONGITUD) Y
(caracter != RETORNOCARRO) HACER
cadena[componente] = caracter
Leer(caracter)
componente = componente+1
FINMIENTRAS
cadena[componente] = TERMINADOR
FIN LeerCadena
Cadenas de Caracteres
LECTURA
CONST
C RETORNOCARRO = CHR(13)
C BLANCO
= CHR(32)
C TABULADOR
= CHR(9)
C TERMINADOR
= CHR(0)
N LONGITUD
= 100
TIPOS
C TCadena [1..LONGITUD]
ALGORITMO B EsDelimitador(E C car)
VAR
B esDel = FALSO
INICIO
SI car == RETORNOCARRO O
car == BLANCO O
car == TABULADOR ENTONCES
esDel = VERDADERO
FINSI
DEVOLVER esDel
FIN EsDelimitador
componente = 1
Leer(caracter)
MIENTRAS componente < LONGITUD Y
NO EsDelimitador(caracter) HACER
cadena[componente] = caracter
Leer(caracter)
componente = componente+1
FINMIENTRAS
cadena[componente] = TERMINADOR
FIN Leer
Cadenas de Caracteres
ESCRITURA
CONST
C TERMINADOR = CHR(0); N LONGITUD = 100
/* Se puede escribir con Escribir(cadena) */
ALGORITMO EscrCadenas (E TCadena cadena)
VAR
N comp
INICIO
comp = 1
MIENTRAS (cadena[comp] != TERMINADOR) HACER
escribir(cadena[comp])
comp = comp + 1
FINMIENTRAS
FIN EscrCadenas
Introduccin a los Computadores
Cadenas de Caracteres
LONGITUD
CONST
C TERMINADOR = CHR(0);
N MAXCARACTERES = 100
TIPOS
C TCadena [1..LONGITUD]
ALGORITMO N Longitud (E TCadena cadena)
VAR
N comp
INICIO
comp = 1
MIENTRAS (cadena[comp] != TERMINADOR) HACER
comp = comp + 1
FINMIENTRAS
DEVOLVER (comp - 1)
FIN Longitud
Cadenas de Caracteres
ASIGNACION
cadena1 = cadena2
/* Si son del mismo tipo*/
o
cadena1 = constante
COMPARACION
CONST
C TERMINADOR = CHR(0); N LONGITUD = 100
TIPOS
C TCadena [1..LONGITUD]
ALGORITMO B Iguales(E TCadena cadena1, cadena2)
VAR
comp, longCad1, longCad2
N
B
igual
INICIO
igual = VERDADERO
longCad1 = Longitud (cadena1)
longCad2 = Longitud (cadena2)
SI longCad1 == longCad2 ENTONCES
comp = 1
MIENTRAS (comp <= longCad2) Y iguales HACER
SI cadena1[comp]!= cadena2[comp]
ENTONCES
igual = FALSO
FINSI
comp = comp + 1
FINMIENTRAS
SINO
igual = FALSO
FINSI
DEVOLVER igual
FIN Iguales
CONST
C TERMINADOR
N LONGITUD
= CHR(0)
= 100
TIPOS
C TCadena [1..LONGITUD]
ALGORITMO Z Posicion (E
E TCadena texto, patron)
VAR
N i, j, longTxt,longPtr
Z pos
B encontrado
INICIO
longTxt = Longitud (texto)
longPtr = Longitud (patron)
i = 0
encontrado = FALSO
MIENTRAS (i + longPtr<=longTxt) Y ( NO encontrado) HACER
j = 1
MIENTRAS (j<=longPtr) Y (texto[i+j] == patron[j]) HACER
j = j + 1
FINMIENTRAS
SI j > longPtr ENTONCES
encontrado = VERDADERO
SINO
i = i + 1
FINSI
FINMIENTRAS
SI encontrado ENTONCES
pos = i+1
SINO
pos = -1
j
FINSI
i
patron
DEVOLVER pos
FIN Posicion
texto
Registros
Registro:
Registro
Registros
Ejemplo:
TIPOS
N TDa
ENUM {Enero, Febrero, Marzo, Abril, Mayo, Junio,
Julio, Agosto,
Septiembre,
Octubre,
Noviembre,
Diciembre } TMes
Z TAo
REGISTRO TFecha
TDa d
TMes m
TAo a
FINREGISTRO
VAR
TFecha f
Registros
Los valores del tipo TFecha se componen de tres
elementos concretos (de tipo TDa, de tipo TMes y de
tipo TAo).
Los identificadores d, m y a representan los nombres
de sus elementos componentes, denominados campos.
campos
Se puede acceder a un componente concreto de forma
directa.
Introduccin a los Computadores
Registros
Ejemplos:
TIPOS
ENUM {oros,copas,espadas,bastos} TPalo
ENUM {As, dos, tres, cuatro, cinco, seis, siete,
sota, caballo, rey} TValor
REGISTRO TCarta
TPalo p
TValor v
FINREGISTRO
REGISTRO TTiempo
N horas
N minutos, segundos
FINREGISTRO
VAR
TCarta c
TTiempo t1, t2
Registros
Asignacin: =
t1 = t2
Se asignan cada uno de los campos
de t2 a los correspondientes de t1.
Acceso a un campo: .
t1.horas
= t2.horas
t1.minutos
= t2.minutos
t1.segundos
= t2.segundos
t1.horas
f.m
t1 = t2
Registros
Un campo de una variable registro puede utilizarse en cualquier lugar en que
resulten vlidas las variables de su mismo tipo.
SI c.p == oros ENTONCES
t1.horas = t1.horas + 4
FINSI
Se puede definir
un tipo antes
Registros
Resolucin de problemas
mediante registros
Para implementar una agenda telefnica:
CONST
N MaxCad = 20
N MaxPer = 50
TIPOS
C TCadena [1..MaxCad ]
REGISTRO TInfoPersona
TCadena nombre, ap1, ap2
N
tfno
FINREGISTRO
TInfoPersona TListaPersonas [1..MaxPer ]
REGISTRO TAgenda
N
numPersonas
TListaPersonas lista
FINREGISTRO
Resolucin de problemas
mediante registros
CONST
N MaxCad = 20
N MaxPer = 50
TIPOS
C TCadena [1..MaxCad ]
REGISTRO TInfoPersona
TCadena
nombre, ap1, ap2
N
tfno
B
vacio
FINREGISTRO
TInfoPersona TAgenda [1..MaxPer ]
Resolucin de problemas
mediante registros
Hacer un programa completo para cada uno de las
dos estructuras de datos, con los procedimientos
necesarios para que gestione:
Insertar una nueva persona
Borrar
Listado
Buscar una persona
Resolucin de problemas
mediante registros
Ejercicio: Implementacin y manipulacin de cadenas de
caracteres
CONST
N Max = 80
TIPOS
REGISTRO TCadena
C ch [1 .. Max]
N long
FINREGISTRO
Introduccin a los Computadores
Resolucin de problemas
mediante registros
ALGORITMO N Longitud (E
E TCadena cad)
INICIO
DEVOLVER c.long
FIN Longitud
Resolucin de problemas
mediante registros
ALGORITMO TCadena Concatenar(E
E TCadena c1,c2)
VAR
Z long1, long3, i
TCadena c3
INICIO
long1 = Longitud(c1)
long3 = long1 + Longitud(c2)
SI (long3 > N) ENTONCES
long3 = N
FINSI
c3.ch = c1.ch
PARA i = (long1+1) HASTA long3 HACER
c3.ch[i] = c2.ch[i-long1]
FINPARA
c3.long = long3
DEVOLVER c3
FIN Concatenar
Registros en C++
<TipoRegistro>::= struct <nombreTipo>
'{'
{ <tipo> <nomVar> {, <tipo> <nomVar>}; }
'}';
Registros en C++
const char FINCAD = \0;
const int MAXCAD = 20;
const int ENTER = \n;
typedef char TCadena[MAXCAD+1]; // MAXCAD caracteres + FINCAD
struct Tfecha
{ int dia, mes, anho;
};
struct TPersona
{ TCadena nombre, apellido1, apellido2;
int edad;
TCadena nif;
Tfecha fecha_nacimiento;
};
Bsqueda y Ordenacin
Objetivos
Uso de las estructuras de datos antes
expuestas
Dependencia: Estructura de datos
seleccionada
Algoritmo diseado
Tipos de Algoritmos
Interno / Externo
Introduccin a los Computadores
Bsqueda
Operacin frecuente en Programacin
Diversidad de Algoritmos
Diferentes Tcnicas de Bsqueda
Bsqueda en Listas: Algoritmos, Eficiencia
Lista
Elementos componentes: Tipo de Datos Simple
TipoElemento Vector[0..MAX-1]
Bsqueda Secuencial
Aplicabilidad:
Desconocimiento acerca de
la organizacin de los datos
Estructura solo accedida
secuencialmente
Idea Clave:
Visitar todas las posiciones
del array, hasta que se
encuentre el elemento o se
llegue al final del mismo
(elemento no est)
Bsqueda Secuencial
Consideraciones
La expresin lgica slo es correcta si el segundo trmino slo
se evala cuando el primero es VERDADERO (cortocircuito)
Eficiencia:
Mejor Caso 1 comparacin
Peor Caso N comparaciones
Caso Promedio
N/2 comparaciones
Fin de Bsqueda:
Elemento hallado
V[ind]==x
Elemento no hallado
ind==MAX
Introduccin a los Computadores
Vector[0..MAX]
Bsqueda Binaria
Aplicabilidad:
-Informacin adicional: Cmo estn organizados los datos.
-Bsqueda ms eficiente
Datos Ordenados.
TElemento Vector [0..MAX-1]
k tal que 1<=k<=MAX-1, se cumple que V[k-1] <= V[k ]
Idea Clave:
Inspeccionar un elemento de ndice m elegido al azar (x
elemento a buscar):
- Si V[m]==x
Fin Bsqueda
- Si V[m]<x
k/ k<=m, V[k] eliminados
- Si V[m]>x
k/ k>=m, V[k] eliminados
Introduccin a los Computadores
Bsqueda Binaria
Algoritmo B Binaria (E Vector V;E TipoElemento x)
VAR
N izq,der,m
B encontrado
Inicio
Izq = 0
Der = MAX - 1
encontrado = FALSO
MIENTRAS (Izq<= Der) Y (NO encontrado)
HACER
m = // cualquier valor entre Izq y Der
SI V[m]==x ENTONCES
encontrado= VERDADERO
SINO
SI V[m] < x ENTONCES
Izq = m + 1
SINO
Der = m - 1
FINSI
FINSI
FINMIENTRAS
DEVOLVER encontrado
FIN Binaria
Bsqueda Binaria
Consideraciones
Eleccin de m
Bsqueda en Cadenas
Objetivo: Localizar la presencia de una cadena de
longitud M dentro de otra de longitud N
0<M<=N
Tipos:
C TipoElemento
TipoElemento Texto[0..N-1]
TipoElemento Patrn[0..M-1]
Algoritmo de bsqueda en
cadenas
Idea Clave: Comparar carcter
a carcter texto y patrn
comenzando por el extremo
izquierdo de ambos
Coinciden ?
Si
se compara el siguiente
carcter
No
el proceso se reinicia
comenzado en la posicin
siguiente a la que se inici la
concordancia
Algoritmo de bsqueda en
cadenas
Idea Clave: Comparar carcter
a carcter texto y patrn
comenzando por el extremo
derecho de ambos
Coinciden ?
Si
se compara el carcter
anterior
No
el proceso se reinicia
comenzado en la anterior
posicin a la que se inici la
concordancia
Ordenacin
Actividad esencial y muy relevante en
Programacin
Ocupa ms del 25% del
Tiempo de computacin
Problema ampliamente estudiado
Diversidad de Algoritmos
Objetivo: Eficiencia
Buscar el mejor
algoritmo de Ordenacin
Ordenacin
Eficiencia
Algoritmos que economicen la memoria
disponible
Algoritmo ms eficiente: Quicksort n*log(n)
Algoritmos directos: Insercin, Seleccin e
Intercambio n2
Menos eficientes
Adecuados para dilucidar las principales
caractersticas de los algoritmos de ordenacin
Ordenacin
Algoritmos de Ordenacin
Tipo:
TipoElemento Vector[1..MAX]
En TipoElemento sobre el que hay definida una relacin
de orden (<).
El problema de ordenacin es encontrar una permutacin
s, tal que si V es una variable del tipo Vector :
V[si] <= V[si+1], 1<= i <= MAX-1
El orden deseado ser: V[s1], V[s2], ........, V[sMAX].
Introduccin a los Computadores
23 15 20
Introduccin a los Computadores
1 3 5 7
9
23 15 20
Paso5:
i=6. Suponemos V1,...., V5 ordenados,
insertamos V6 => V1,....,V6 ordenados.
1 3 5 7
9
23 15 20
Paso6:
i=7. Suponemos V1,...., V6 ordenados,
insertamos V7 => V1,....,V7 ordenados.
1 3 5 7
9
15 23 20
Paso7:
i=8. Suponemos V1,...., V7 ordenados,
insertamos V8 => V1,....,V8 ordenados.
1 3 5 7
9
15 20 23
Paso5:
16 64 80 90 120 320 200 96
Paso6:
16 64 80 90 96 320 200 120
Paso7:
16 64 80 90 96 120 200 320
Resultado
Paso4:
16 64 80 90 120 320 200 96
N elementos
N-1 Intercambios
DEVOLVER(pos_menor)
FIN PosMenorElem
VAR
Indice pos_menor, i
INICIO
pos_menor=inicio
PARA i=inicio+1 HASTA MAX
HACER
SI V[i] < V[pos_menor]
ENTONCES
pos_menor=i
FINSI
FINPARA
VAR
Indice pos_menor
INICIO
pos_menor=
Posicion_menor_elem(V, posicion+1)
SI V[posicion] > V[pos_menor]
ENTONCES
Intercambiar(V[posicion],
V[pos_menor])
FINSI
FIN SubirMenorSeleccion
Ordenacin por
Intercambio
Idea Clave: Comparar pares de elementos
adyacentes e intercambiarlos entre s
1) Comparar VN y VN-1, si no estn ordenados,
intercambiarlos
2) Comparar VN-1 y VN-2, repitiendo el proceso
3) El proceso contina hasta que cada elemento del
array haya sido comparado con sus elementos
adyacentes
Introduccin a los Computadores
Ordenacin por
Intercambio
En el primer recorrido el elemento ms pequeo
del array sube posicin a posicin hasta ocupar la
primera posicin del array
Mtodo de la
Burbuja
En el segundo recorrido el segundo elemento
mayor llegar a la segunda posicin y as
sucesivamente
N-1 Recorridos, N-i Comparaciones, N-i
Intercambios como mximo (recorrido i-simo)
Introduccin a los Computadores
Ordenacin por
Intercambio
Ejemplo
72
64
50
23
85
18
37
99
45
72
64
50
23
85
18
37
99
8
45
72
64
50
23
85
18
37
8
99
45
72
64
50
23
85
18
8
37
99
45
72
64
50
23
85
8
18
37
99
45
72
64
50
23
8
85
18
37
99
45
72
64
50
8
23
85
128
37
99
45
72
64
8
50
23
85
18
37
99
45
72
8
64
50
23
85
18
37
99
45
8
72
64
50
23
85
18
37
99
45
Paso1:
72
64
50
23
85
18
37
99
45
8
Ordenacin por
Intercambio
Paso2:
8
72
64
50
23
85
18
37
99
45
8
72
64
50
23
85
18
37
45
99
8
72
64
50
23
85
18
37
45
99
8
72
64
50
23
85
18
37
45
99
8
72
64
50
23
18
85
37
45
99
8
72
64
50
18
23
85
37
45
99
8
72
64
18
50
23
85
37
45
99
8
72
18
64
50
23
85
37
45
99
8
18
72
64
50
23
85
37
45
99
37
45
50
64
72
85
99
Paso3,....., Paso9:
8
18
23
Ordenacin por
Intercambio
ALGORITMO Intercambio (ES
Vector V)
VAR
Indice i
INICIO
PARA i=1 HASTA MAX-1 HACER
SubirMenorBurbuja(V,i)
FINPARA
FIN Intercambio
ALGORITMO
SubirMenorBurbuja(ES
Vector V;E Indice
posicion)
VAR
Indice i
INICIO
PARA i=MAX HASTA
posicion+1
(PASO -1) HACER
SI V[i-1] > V[i]
ENTONCES
Intercambiar(
V[i-1], V[i])
FINSI
FINPARA
FIN SubirMenorBurbuja
Ordenacin por
Intercambio
Mejora
Eliminar recorridos innecesarios
Elementos ya ordenados en un recorrido
no se ha hecho ningn intercambio
Ordenacin por
Intercambio
ALGORITMO Intercambio2 (ES
Vector V)
VAR
Indice i
B intercambio
TipoElemento aux
INICIO
intercambio=VERDADERO
i=1
MIENTRAS i<=MAX-1 Y
intercambio HACER
intercambio=FALSO
Bibliografa
Cmo programar en C/C++. H.M. Deitel, P.J. Deitel. Prentice Hall, 1995