Anda di halaman 1dari 6

Curso: Estructura de Datos

Mtodos de Ordenamiento en Vectores


1) Mtodo de la Burbuja (Bubble Sort)
Se le conoce como burbuja porque los elementos ms pequeos van subiendo en cada iteracin 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) Mtodo de Insercin
Consiste en tomar uno por uno los elementos de un arreglo y recorrerlo hacia su posicin 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 posicin 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

Curso: Estructura de Datos


3) Mtodo de Seleccin
El mtodo de ordenamiento por seleccin consiste en encontrar el menor de todos los elementos del arreglo e
intercambiarlo con el que est en la primera posicin. Luego el segundo ms pequeo e intercambiarlo con el que est en
la segunda posicin, 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) Mtodo de Shell
Nombrado as en honor a su desarrollador, Donald Shell.
El Shell sort es una generalizacin del ordenamiento por insercin, teniendo en cuenta dos observaciones:
- El ordenamiento por insercin es eficiente si la entrada est "casi ordenada".
- El ordenamiento por insercin es ineficiente, en general, porque mueve los valores slo una posicin cada vez.
El algoritmo Shell sort mejora el ordenamiento por insercin comparando elementos separados por un espacio de varias
posiciones. Esto permite que un elemento haga "pasos ms grandes" hacia su posicin esperada. Los pasos mltiples sobre
los datos se hacen con tamaos de espacio cada vez ms pequeos. El ltimo paso del Shell sort es un simple ordenamiento
por insercin, pero para entonces, ya est garantizado que los datos del vector estn casi ordenados.

DOCENTE: Ing. Marcelino Torres Villanueva

Curso: Estructura de Datos


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 rpido (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 dems 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 implementacin 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 ms de un elemento. Una vez
terminado este proceso todos los elementos estarn ordenados.

DOCENTE: Ing. Marcelino Torres Villanueva

Curso: Estructura de Datos


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

Curso: Estructura de Datos

Mtodos de Bsqueda
1) Bsqueda Secuencial
Este algoritmo compara uno a uno los elementos del arreglo hasta recorrerlo por completo indicando si el nmero
buscado existe.
int busquedaSecuencial(float x[], int n, float dato)
{
int i;
for(i=0;i<n;i++)
{
if(x[i]==dato)
return i;
}
return -1;
}
La funcin de bsqueda devuelve la posicin donde encuentra el dato, si el dato no se encuentra devuelve -1.

2) Bsqueda Binaria
Para poder aplicar este algoritmo se requiere que el arreglo este ordenado.
Este algoritmo permite buscar de una manera ms eficiente un dato dentro de un arreglo, para hacer esto se determina
el elemento central del arreglo y se compara con el valor que se esta buscando, si coincide termina la bsqueda y en caso
de no ser as se determina si el dato es mayor o menor que el elemento central, de esta forma se elimina una mitad del
arreglo junto con el elemento central para repetir el proceso hasta encontrarlo o tener solo un elemento en el arreglo.
int busquedaBinaria(float x[], int n, float dato)
{
int izq,der,central;
izq = 0;
der = n-1;
central = (izq+der)/2;
while (dato != x[central] && izq <= der )
{
if(dato > x[central])
izq = central+1;
else
der = central-1;
central=(izq+der)/2;
}
if (dato == x[central])
return central;
else
return -1;
}

DOCENTE: Ing. Marcelino Torres Villanueva

Curso: Estructura de Datos

1)

Ejercicios de Ordenamiento y Bsqueda.


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 ordnelas segn la longitud de caracteres de cada frase.

3)

Ordene una lista de invitados a una fiesta segn sus apellidos. Si tienen los mismos apellidos, deber tambin
ordenar por nombres.

4)

Se tiene informacin de n alumnos (nroCarnet, nombre y promedio). Mostrar una lista ordenada
alfabticamente y otra lista por orden de mrito.

5)

Se tiene 2 arreglos ordenados. Mzclelos de tal forma que se cree un tercer arreglo que siempre se mantenga

6)

ordenado. No use ningn mtodo de ordenamiento.


Se tiene un arreglo ordenado. Inserte un nuevo elemento en la posicin que le corresponda, de tal manera que
el arreglo siga ordenado. No deber usar ningn 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

8)

cantidad de elementos es par es la semisuma de los trminos centrales.


Encuentre la moda de un conjunto de datos. La moda es el elemento que mas se repite. Puede haber una o
varias modas.

9)

Se tiene un diccionario electrnico con n palabras y sus respectivos significados. Busque una palabra y muestre
su significado. Use bsqueda binaria.

10) Implemente la bsqueda binaria de manera recursiva para encontrar un elemento de un vector.
11) Implemente el ordenamiento por Burbuja recursivamente.
12) Lea un polinomio y ordnelo segn su grado.

DOCENTE: Ing. Marcelino Torres Villanueva

Anda mungkin juga menyukai