Sunteți pe pagina 1din 5

METODOS DE ORDENAMIENTO CURSO: FUNDAMENTOS DE PROGRAMACION

Métodos de Ordenamiento en Vectores

1) Método de la Burbuja (Bubble Sort)

Se le conoce como burbuja porque los elementos más pequeños van subiendo en cada iteración hasta que el arreglo
queda ordenado.

void burbuja(float v[], int n)


{
int i,j;
float temp;
for(i=0;i<n-1;i++)
for(j=n-1;j>i;j--)
if(v[j]<v[j-1])
{
temp=v[j];
v[j]=v[j-1];
v[j-1]=temp;
}

2) Método de Inserción
Consiste en tomar uno por uno los elementos de un arreglo y recorrerlo hacia su posición con respecto a los
anteriormente ordenados. Así empieza con el segundo elemento y lo ordena con respecto al primero. Luego sigue con el
tercero y lo coloca en su posición ordenada con respecto a los dos anteriores, así sucesivamente hasta recorrer todas
las posiciones del arreglo.

void Insercion(float v[],int n)


{
int i,j;
float temp;
for(i=1;i<n;i++)
{
temp=v[i];
j=i-1;
while(j>=0 && temp<v[j])
{
v[j+1]=v[j];
j--;
}
v[j+1]=temp;
}
}
DOCENTE: Ing. Marcelino Torres Villanueva 1
METODOS DE ORDENAMIENTO CURSO: FUNDAMENTOS DE PROGRAMACION

3) Método de Selección

El método de ordenamiento por selección consiste en encontrar el menor de todos los elementos del arreglo e

intercambiarlo con el que está en la primera posición. Luego el segundo más pequeño e intercambiarlo con el que está en

la segunda posición, y así sucesivamente hasta ordenar todo el arreglo.

void Seleccion(float v[], int n)


{
int indice_menor,i,j;
float temp;
for(i=0;i<n-1;i++)
{
indice_menor=i;
for(j=i+1;j<n;j++)
{
if(v[j]<v[indice_menor])
indice_menor=j;
}
temp=v[i];
v[i]=v[indice_menor];
v[indice_menor]=temp;
}
}
4) Método de Shell

Nombrado así en honor a su desarrollador, Donald Shell.

El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones:

- El ordenamiento por inserción es eficiente si la entrada está "casi ordenada".

- El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez.

El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias

posiciones. Esto permite que un elemento haga "pasos más grandes" hacia su posición esperada. Los pasos múltiples sobr e

los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamient o

por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados.

DOCENTE: Ing. Marcelino Torres Villanueva 2


METODOS DE ORDENAMIENTO CURSO: FUNDAMENTOS DE PROGRAMACION

void Shell(float v[], int n)


{
float temp;
int i,j,salto=n/2;
while(salto>0)
{
for(i=salto;i<n;i++)
{
j=i-salto;
while(j>=0)
{
if(v[j]>v[j+salto])
{
temp=v[j];
v[j]=v[j+salto];
v[j+salto]=temp;
j=j-salto;
}
else
j=-1;
}
}
salto=salto/2;
}
}

4) Metodo de Ordenamiento rápido (quick Sort)

El algoritmo funciona de la siguiente forma:

Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivote.

Colocar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores que

él, y al otro los mayores. Los elementos iguales al pivote pueden ser colocados tanto a su derecha como a su izquierda,

dependiendo de la implementación deseada. En este momento, el pivote ocupa exactamente el lugar que le

corresponderá en la lista ordenada.

La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los

elementos a su derecha.

Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un elemento. Una vez

terminado este proceso todos los elementos estarán ordenados.

DOCENTE: Ing. Marcelino Torres Villanueva 3


METODOS DE ORDENAMIENTO CURSO: FUNDAMENTOS DE PROGRAMACION

void qsort(float v[], int l, int r)


{
int i=l,j=r;
float x,temp;
x=v[(l+r)/2];

do{
while(v[i]<x && i<r) i++;
while(v[j]>x && j>l) j--;
if(i<=j)
{
temp=v[i];
v[i]=v[j];
v[j]=temp;
i++;
j--;
}
}while(i<=j);
if (i<r) Qsort(v,i,r);
if (l<j) Qsort(v,l,j);
}

DOCENTE: Ing. Marcelino Torres Villanueva 4


METODOS DE ORDENAMIENTO CURSO: FUNDAMENTOS DE PROGRAMACION

Ejercicios de Ordenamiento y Búsqueda.


1) Se almacenan los nombres y promedios de n alumnos en un arreglo de estructuras. Muestre aquellos alumnos
que pertenecen al tercio superior. El tercio superior está formado por la tercera parte superior de los
inscritos en un curso ordenado descendentemente por promedio.
2) Lea n frases y ordénelas según la longitud de caracteres de cada frase.
3) Ordene una lista de invitados a una fiesta según sus apellidos. Si tienen los mismos apellidos, deberá también
ordenar por nombres.
4) Se tiene información de n alumnos (nroCarnet, nombre y promedio). Mostrar una lista ordenada
alfabéticamente y otra lista por orden de mérito.
5) Se tiene 2 arreglos ordenados. Mézclelos de tal forma que se cree un tercer arreglo que siempre se mantenga
ordenado. No use ningún método de ordenamiento.
6) Se tiene un arreglo ordenado. Inserte un nuevo elemento en la posición que le corresponda, de tal manera que
el arreglo siga ordenado. No deberá usar ningún algoritmo de ordenamiento.
7) Encuentre la mediana de un conjunto de datos. La mediana se obtiene ordenando los datos de menor a mayor y
tomando el elemento central. Si la cantidad de elementos es impar es el termino central en caso contrario si la
cantidad de elementos es par es la semisuma de los términos centrales.
8) Encuentre la moda de un conjunto de datos. La moda es el elemento que mas se repite. Puede haber una o
varias modas.
9) Implemente el ordenamiento por Burbuja recursivamente.
10) Lea un polinomio y ordénelo según su grado.

DOCENTE: Ing. Marcelino Torres Villanueva 5

S-ar putea să vă placă și