viernes, 11 de julio de 2014

Evap 7

METODOS DE ORDENAMIENTO EN DEV C++
Debido a que las estructuras de datos son utilizadas para almacenar información, para poder recuperar esa información de manera eficiente es deseable que aquella esté ordenada. Existen varios métodos para ordenar las diferentes estructuras de datos básicas.
En general los métodos de ordenamiento no son utilizados con frecuencia, en algunos casos sólo una vez. Hay métodos muy simples de implementar que son útiles en los casos en dónde el número de elementos a ordenar no es muy grande (ej, menos de 500 elementos). Por otro lado hay métodos sofisticados, más difíciles de implementar pero que son más eficientes en cuestión de tiempo de ejecución.

Existen muchos tipos de ordenamiento, esta vez analizaremos 3 de ellos. Estos son:
1.- Método de ordenamiento por burbuja:
Este método consiste en acomodar el vector moviendo el mayor hasta la última casilla comenzando desde la casilla cero del vector hasta haber acomodado el número más grande el la última posición, una vez acomodado el más grande, prosigue a encontrar  y acomodar el siguiente más grande comparando de nuevo los números desde el inicio del vector, y así sigue hasta ordenar todo los elementos del vector.y así si
El procedimiento de la burbuja es el siguiente:

Ir comparando desde la casilla 0 numero tras número hasta encontrar uno mayor, si este es realmente  el mayor de todo el vector se llevará hasta la última casilla, si no es así, será reemplazado por uno mayor que él.

Este procedimiento seguirá así hasta que halla ordenado todas las casillas del vector.

Una de las deficiencias del algoritmo es que ya cuando a ordenado parte del vector vuelve a compararlo cuando esto ya no es necesario.hasta ordenar todo los elementos el arreglo.

EJEMPLO:
void burbuja(int * v, int n) /*** código en C++ ***/
{
 /* ordenamiento de burbuja */
 for (int i = 0; i < n-1; i++)
 for (int j = i + 1; j < n; j++) {
 if ( v[i] > v[j] ) //realiza la comparación
{
 int tem = v[i]; //si es cierta intercambia los datos
 v[i] = v[j];
 v[j] = tem;
 }
 }
}

2.- Método de ordenamiento por Inserción directa:
El algoritmo de ordenación por el método de inserción directa es un algoritmo relativamente sencillo y se comporta razonablemente bien en gran cantidad de situaciones.
El algoritmo ordena los dos primeros elementos de la lista, a continuación el tercer elemento se inserta en la posición que corresponda, el cuarto se inserta en la lista de tres elementos, y así sucesivamente. Este proceso continua hasta que la lista este totalmente ordenada.
EJEMPLO:
#include<stdio.h>
#include<conio.h>
int V[4]={4,1,7,2};
int n=4;
int i,j,auxiliar;
void main(){
clrscr();
for(i=1;i<n;i++)
{
j=i;
auxiliar=V;
while(j>0 && auxiliar<V[j-1])
{
V[j]=V[j-1];
j--;
}
V[j]=auxiliar;
}
for(i=0;i<4;i++)
{
printf("%d",V);
}
getch();
}
3.- Método de ordenamiento por 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, y así sucesivamente hasta ordenar todo el arreglo.
PROCEDIMIENTO:
·        •Buscas el elemento más pequeño de la lista.
·        •Lo intercambias con el elemento ubicado en la primera posición de la lista.
·        •Buscas el segundo elemento más pequeño de la lista.
·        •Lo intercambias con el elemento que ocupa la segunda posición en la lista.
·        •Repites este proceso hasta que hayas ordenado toda la lista.
EJEMPLO:
#include<stdio.h>
#include<conio.h>
int V[4]={1,4,8,6};
int n=4,j=0,i=0;
int temp=0,minimo=0;
void main(){
clrscr();
for(i=0;i<n-1;i++)
{
minimo=i;
for(j=i+1;j<n;j++)
{
if(V[minimo] > V[j])
{
minimo=j;
}
}
temp=x[minimo];
V[minimo]=V;
V=temp;
}
for(i=0;i<n;i++)
{
printf("%d",V);
}
getch();

}