1. Estudiante de Ingeniería Electrónica
POR: BRYAN GORDILLO
ORDENAMIENTO DE VECTORES
¿Qué es ordenamiento?
Es la operación de arreglar los
registros de una tabla en algún orden
secuencial de acuerdo a un criterio
de ordenamiento.
Método Burbuja
Ventajas:
- Fácil implementación.
- No requiere memoria adicional.
Desventajas:
- Muy lento.
- Realiza numerosas comparaciones.
- Realiza numerosos intercambios.
Ordenación rápida (quicksort)
Ventajas:
-Es el ordenamiento más eficaz de todos
- Permite ordenar n elementos en un tiempo
proporcional a n*log(n).
Desventajas:
- difícil de explicar
-pseudocódigo extenso
Ordenación Interna: clasificación de valores de un vector
según orden en la memoria central
Ordenación Externa: clasificación de los registros de un
archivo situado en soporte en externo
Métodos de
ordenamiento mas
usados
Ordenación por inserción
Ventajas:
- Fácil implementación.
- Requerimientos mínimos de memoria.
Desventajas:
- Lento.
- Realiza numerosas comparaciones
El propósito principal de
un ordenamiento es el de
facilitar las búsquedas
de los miembros del
conjunto ordenado
Ordenación por selección
Ventajas:
- Fácil implementación.
- No requiere memoria adicional.
- Realiza pocos intercambios.
- Rendimiento constante: poca diferencia
entre el peor y el mejor caso.
Desventajas:
- Lento.
-Realiza numerosas comparaciones.
Método de Shell
Ventajas:
- Mucha más eficiencia
- consigue una ordenación en menor tiempo
Desventajas:
- difícil de explicar
-pseudocódigo extenso
Nota: a veces el método más entendible no es el más eficaz ni el más rápido entonces a través de este
cuadro podemos distinguir cual es el más conveniente y eficaz para el ordenamiento de vectores
Método Burbuja que hace..??
Teniendo un vector A, compara elementos de este vector en posiciones contiguas mediante
una pregunta lógica (si o no) si dicha pregunta se cumple realiza un intercambio de
posiciones de lo contrario el vector no será afectado
Ejemplo: A[0] con A[1] son adyacentes(compara) A[0]>A[1] o A[0]<A[1]- según orden
Proceso de intercambio
aux=A[C];
A[C]
A[C+1]
A[C]=A[C+1];
A[C+1]=A[C]
aux
Análisis del método burbuja:
2. a[0] a[1] a[2] a[3] a[4]
4
8
2
20 5
Vector
4
4
4
4
4
2
2
2
2
2
2
8
8
2
2
2
4
4
4
4
4
4
2
2
8
8
8
8
8
5
5
5
5
20
20
20
20
5
5
5
8
8
8
8
4>8no sin cambios
8>2 si a[1]=2 y a[2]=8
A burbujeado el mayor al final entonces a
la siguiente entrada del ciclo ya no lo
8>20 no realiza cambios
toma, eso quiere decir que ahora tendrá
20>5 si a[3]=5 y a[4]=20
un vector de 4 columnas
4>2 si a[0]=2 y a[1]=4
A burbujeado el mayor del nuevo vector
4>8 no sin cambios
de 4 columnas al final entonces ahora
8>5 si a[2]=5 y a[3]=8
tendrá un nuevo vector de 3 columnas
2>4 no sin cambios
A burbujeado el mayor del nuevo vector
4>5 no sin cambios y 5 de 3 columnas al final entonces ahora
2>4 no sin cambios
tendrá un nuevo vector de 2 columnas
Vector ordenado ascendentemente
5
5
5
5
20
20
20
20
20
20
20
desordenado con 1 filas y 5 columnas.
Diseño de método burbuja:
for
Pseudocódigo: observamos la
estructura totalmente
entendible lista para ser
traduccida a cualquier otro
lenguaje programático
for
if
Intercambio
Diagrama de flujo: podemos observar claramente los dos
ciclos y la pregunta lógica y el intercambio respetivo
Método Burbuja
Ventajas:
- Fácil implementación.
- No requiere memoria adicional.
Desventajas:
- Muy lento.
- Realiza numerosas comparaciones.
- Realiza numerosos intercambios.
Informe programa: bryan_gordillo_orden_bubuja_vector.cpp
3. Pseudocódigo
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<iomanip>
intlim,b,c,x,aux,g;//declaraciones globales
usingnamespacestd;
voidordenar_burbuja (int arreglo[]);
intmain()
{
cout<<"ingrese limite: "<<endl;
cin>>lim;
int arreglo [lim];
srand(time(NULL));
cout<<"arreglo inicial: "<<endl;
for (g=0;g<lim;g++)//ciclo generador del
vector
{
x=rand()%100;
arreglo[g]=x;
cout<<"a"<<g<<"="<<arreglo[g]<<endl;
}
ordenar_burbuja(arreglo);
}
voidordenar_burbuja (int arreglo[])
{
for(b=0;b<lim;b++)
{
for(c=0;c<lim-1;c++)
{
if (arreglo[c]>arreglo[c+1])
{
aux=arreglo[c];
arreglo[c]=arreglo[c+1];
arreglo[c+1]=aux;
}
}
}
cout<<"arreglo ordenado: "<<endl;
for(c=0;c<lim;c++)
{
cout<<"a"<<c<<"="<<arreglo[c]<<endl;
}
}
ejecución
Corrida manual
Lim
g=0
x
Arreglo[g]
B=0
B=1
B=2
B=3
5
0<5
25
1<5
38
2<5
60
3<5
12
4<5
94
A[0]=25
A[1]=38
A[2]=60
A[3]=12
A[4]=94
Pregunta
logica (if)
a[0]> a[1]
a[1]> a[2]
a[2]> a[3]
a[3]> a[4]
a[0]> a[1]
a[1]> a[2]
a[2]> a[3]
a[0]> a[1]
a[1]> a[2]
a[0]> a[1]
oreden
a[0] a[1] a[2] a[3] a[4]
C=0;
25
25
25
25
25
25
25
25
12
12
12
38
38
38
38
38
38
12
12
25
25
25
60
60
60
12
12
12
38
38
38
38
38
12
12
12
60
60
60
60
60
60
60
60
94
94
94
94
94
94
94
94
94
94
94
Por cada cuadro pintado de verde B aumentea en 1
entoces en bucle entra cuatro veces para un arreglo de 5
C aumenta en cada corrida osea cambia las posiciones
de comparacion
IF es la pregunta logica respectiva sin esta no existe
intercambio
C=1;
C=2;
C=3;
Así
respectiv
amente