Metodos De Ordenamiento Y Busqueda C++
Enviado por crcaceres05 • 12 de Junio de 2012 • 1.285 Palabras (6 Páginas) • 1.433 Visitas
CODIGO FUENTE DE LOS MÉTODOS DE ORDENAMIENTO Y BUSQUEDA EN C++
1. Ordenamiento por Intercambio:
Compara el elemento inferior de la lista o array con los restantes elementos efectuando intercambios de las posiciones cuando el orden resultante de la comparación no sea el correcto.
El código fuente del método de ordenamiento por Intercambio es el siguiente:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
void intercambio(int &x, int &y)
{
int aux = x;
x = y;
y = aux;
}
void OrdIntercambio(int a[],int n)
{
int i,j;
for (i= 0;i<n-1; i++)
{
for(j=i+1; j< n; j++)
{
if(a[i] > a[j])
{
intercambio(a[i],a[j]);
}
}
}
}
void despliegalista(int a[],int n)
{
for (int i=0; i <n; i++)
{
cout << a[i] << " ";
}
cout << endl;
}
void main(void)
{
int lista[20] = {30,35,38,58,14,15,50,20,27,10,12,85,49,65,86,60,25,90,5,16};
cout << "Lista original \n";
despliegalista(lista,20);
OrdIntercambio(lista,20);
cout <<endl<<"Lista ordenada"<<endl;
despliegalista(lista,20);
getch();
}
2. Ordenamiento por Selección:
En la primera pasada se busca el elemento mas pequeño de la lista o array y se intercambia con el primer elemento de la lista.
La siguiente pasada busca en esta lista desordenada y selecciona el elemento mas pequeño que se almacena entonces en la siguiente posición
El proceso continua n-1 pasadas en cuyo momento la lista desordenada se reduce a un elemento que es el mayor de la lista y el array completo ha quedado ordenado.
El código fuente del método de ordenamiento por Selección es el siguiente:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
void intercambio(int &x, int &y)
{
int aux = x;
x = y;
y = aux;
}
void Ordseleccion(int a[],int n)
{
int indicemenor;
int i,j;
for(i = 0; i < n-1; i++)
{
indicemenor = i;
for (j= i+1; j < n; j++)
{
if (a[j]< a[indicemenor])
{
indicemenor = j;
}
}
intercambio(a[i],a[indicemenor]);
}
}
void despliegalista(int a[],int n)
{
for (int i=0; i <n; i++)
{
cout << a[i] << " ";
}
cout << endl;
}
void main(void)
{
int lista[20] = {30,35,38,58,14,15,50,20,27,10,12,85,49,65,86,60,25,90,5,16};
cout << "Lista original \n";
despliegalista(lista,20);
Ordseleccion(lista,20);
cout <<endl<<"Lista ordenada"<<endl;
despliegalista(lista,20);
getch();
}
3. Ordenamiento por Inserción :
Teniendo una lista de elementos desordenados, se toma el primer elemento y se coloca en la primera posición del nuevo array que irá quedando ordenado.
Se toma el siguiente y se inserta en la posición correcta, corriendo una posición a la derecha los demas elementos en caso necesario.
El código fuente del método de ordenamiento por inserción es el siguiente:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
void OrdInsercion(int a[],int n)
{
int i,j;
int aux;
for(i = 1; i < n; i++)
{
j = i;
aux = a[i];
while(j>0 && aux< a[j-1])
{
a[j] = a[j-1];
j--;
}
a[j] = aux;
}
}
void despliegalista(int a[],int n)
{
for (int i=0; i <n; i++)
{
cout << a[i] << " ";
}
cout << endl;
}
void main(void)
{
int lista[20] = {30,35,38,58,14,15,50,20,27,10,12,85,49,65,86,60,25,90,5,16};
cout << "Lista original \n";
despliegalista(lista,20);
OrdInsercion(lista,20);
cout <<endl<<"Lista ordenada"<<endl;
despliegalista(lista,20);
getch();
}
4. Ordenamiento por Burbuja.
Los valores mas pequeños gradualmente suben hacia la parte superior del array de modo similar a como suben las burbujas de agua. Se comparan parejas sucesivas de elementos. Si una pareja está en orden decreciente sus valores se intercambian en el array.
El código fuente del método de ordenamiento por Burbuja es el siguiente:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
void OrdBurbuja(int a[],int n)
{
int j,pasada;
int aux;
bool interruptor = true;
for(pasada = 0; pasada < n-1 && interruptor == true; pasada++)
{
...