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();
}