domingo, 7 de abril de 2013

Algoritmos de Ordenación en C++


La ordenación de datos(sort) es una operación consistente en disponer un conjunto-estructura- de datos en algún determinado orden con respecto a uno de los campos de elementos del conjunto.Una colección de datos(estructura) puede ser almacenada en un archivo, un array (vector o matriz), un array de registros,una lista o un árbol.Cuando los datos están almacenados en un array ,lista o un árbol, se denomina ordenación interna,por el contrario si están almacenados en un archivo,el proceso de ordenación se llama ordenación externa.
                                              Quicksort in action on a list of numbers. The horizontal lines are pivot values.
Este tema es indispensable a la hora de trabajar con estructura de datos,por eso que en el curso que llevo (Estructura de Datos) nos dejaron como tarea implementar estos algoritmos en C++,la verdad como siempre a ultima hora…pero bueno espero les sirva de algo(en algunas impresiones se repetira el arreglo al inicio pero luego poco a poco se muestran los cambios).
Para mejor comprensión un VideoMIT donde hablan un poco sobre estos métodos.
Algoritmos Implementados:

#include 
#include 
#include 

HANDLE hCon;

using namespace std;
void SetColor(int i);
void LeerArray(int num,float x[]);
void MostrarArray(int num,float x[]);
void MostrarColor(int num,float x[]);
void MostrarBubleSort(int num,float x[]);
void MostrarSeleccionSort(int num,float x[]);
void MostrarInsercionSort(int num,float x[]);
void MostrarShellSort(int num,float x[]);
void MostrarQuickSort(int ,int,float x[],int);
void MostrarMergeSort(float x[],int,int,int);
void merge(float x[], int ini, int m, int fin,int num);

int menu();
int main()	
{
	int op,num;
	float x[50];
	do
		{
			op=menu();
			switch(op)
			{
			case 1:   {
				SetColor(10);
				cout<<"\n\t\t\t   [ INGRESO DE ARREGLO ]"<>num;cout<>num;cout<>num;cout<>num;cout<>num;cout<>num;cout<>null");
	return 0;
}

void MostrarBubleSort(int num,float x[])
{
	float temp;
	int z=0;
	for(int i=1;i=i;j--)
		{
			cout<<"\t";MostrarColor(num,x);
			if(x[j-1]>x[j])
			{
				temp  = x[j-1];
				x[j-1]= x[j];
				x[j]  = temp;	
			}	
			z++;		
		}	
	}	
}

void MostrarSeleccionSort(int num,float x[])
{
	float temp;
	for(int i=0;i=0 && temp0;salto=salto/2)
		do
			{
				band=0;
				cout<<"\t";MostrarColor(num,x);
				for(int i=0;ix[i+salto])	
					{
						temp = x[i];			
						x[i] = x[i+salto];	
						x[i+salto] = temp;
						band=1;	
					}				
				}			
			}while(band);
}

void MostrarQuickSort(int ini,int fin,float x[],int num)
{
	int i=ini;
	int j=fin;
	float central=x[(ini+fin)/2];
	float temp;
	do
		{	
			cout<<"\t";MostrarColor(num,x);	
			while(central>x[i])i++;
			while(centrali)MostrarQuickSort(i,fin,x,num);
	
}

void MostrarMergeSort(float x[], int ini, int fin,int num)	
{	
	if(ini!=fin)		
	{		
		int m = (ini+fin)/2;		
		MostrarMergeSort(x, ini, m,num);		
		MostrarMergeSort(x, m+1,fin,num);		
		merge(x, ini, m, fin,num);		
	}	
}

void merge(float x[], int ini, int m, int fin,int num)
{
	int *aux = new int[m-ini+1];
	for(int j=ini; j<=m; j++)	
		aux[j-ini] = x[j];
	int c1=0, c2=m+1;
	for(int j=ini; j<=fin; j++)
	{	
		cout<<"\t";MostrarColor(num,x);	
		if(aux[c1] < x[c2])		
		{
			
			x[j] = aux[c1++];
			
			if(c1==m-ini+1)
				
				for(int k=c2; k<=fin; k++)
					
					x[++j] = x[k];
			
		}
		
		else
			{	
				x[j] = x[c2++];
				if(c2==fin+1)	
					for(int k=c1; k<=m-ini; k++)	
						x[++j] = aux[k];	
			}
	}
}

int menu()
{
	int op;
	do
		{
			system("cls");
			SetColor(15);
			cout<<"\t     ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»  "< Ingrese opcion   :";SetColor(15);cin>>op;
			
		}while(op<1 data-blogger-escaped-op="">6);
	return op;
	
}

void LeerArray(int num,float x[])
{
	for(int i=0;i>x[i];	
	}
}

void MostrarArray(int num,float x[])
{
	int c=num;
	for(int i=0;i0)		
		{		
			SetColor(14);cout<<" , ";		
		}	
	}	
}

void MostrarColor(int num,float x[])	
{
	int c=num;
	
	for(int i=0;i0)	
		{	
			SetColor(14);cout<<" , ";	
		}
	}
	cout<<endl<<endl;
	
}



void SetColor(int i)
{
	if(hCon == NULL)	
		hCon = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(hCon, i);
}

1 comentario:

  1. merit casino【WG98.VIP】 - Xn Table Games
    Xn 제왕 카지노 Table Games. 인카지노 It is a 메리트 카지노 고객센터 gambling casino and it is a gambling site.

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...