Ordenar valores en una secuencia: C++ Linux

Aquí expongo un programa sencillo para ordenar (método de la burbuja) una secuencia desordenada de valores enteros (cambien el tipo si así lo desean). Grábenlo como ordenar.cpp y pónganlo, por ejemplo, en una carpeta llamada ORDENAR.

//Programa para ordenacion de datos

#include <iostream>
#include <fstream>
#include <cstdlib>

void ordenar (int n, int *a);

using namespace std;

int main() {

	system ("clear");

    ifstream label1 ("datos.in");

	int n, i, j;

	int *a;

	label1 >> n;  // numero de datos

	a = new int [n];

	for (i=0; i < n; i++){

		label1 >> a[i];

	}

	cout << "Serie desordenada de valores\n";

	for (i=0; i < n; i++){

		cout << a[i] << " ";

	}

	cout << "\n";

	ordenar(n,a); //funcion ordenar

	cout << "Serie ordenada de valores\n";

	for (i=0; i < n; i++){

		cout << a[i] << " ";

	}

	cout << "\n";

	return 0;

}

void ordenar (int n, int *a){

	int i, j, mayor;

	for (i=0; i < n-1; i++){

		for (j=0; j < n-1; j++){

			if(a[j] > a[j+1]){

				mayor = a[j];
			
				a[j] = a[j+1];

				a[j+1] = mayor;
			
			}

		}

	}

}

Graben el archivo datos.in, en el directorio ORDENAR, con lo siguiente:

7
4 5 1 8 2 7 0

Compilen y ejecuten, en el directorio ORDENAR, con:

g++ ordenar.cpp -o ordenar [Enter]
./ordenar [Enter]

La salida por pantalla será algo como esto:

Serie desordenada de valores
4 5 1 8 2 7 0 
Serie ordenada de valores
0 1 2 4 5 7 8 

A pesar de su sencillez, el algoritmo de ordenación por el método de la burbuja es sumamente ineficiente. Para que tengan una visión comparativa de los diferentes algoritmos de ordenación pueden visitar este enlace:

http://es.wikipedia.org/wiki/Algoritmo_de_ordenamiento

Por otra parte, en este link:

insercion.cpp

se tiene la implementación del código pero usando el método de ordenación por inserción. En este caso, también se modificó la lectura de datos a traves del archivo datos.in de tal manera que no fuese necesario incluir el número de datos. Por otra parte, si quieren probar la ordenación con 450 valores de este datos.in, deben modificar int a[20] de tal manera que aparezca int a[450].

Esta entrada fue publicada en Código C++ y etiquetada , . Guarda el enlace permanente.

Una respuesta a Ordenar valores en una secuencia: C++ Linux

  1. Pingback: Ordenar enteros usando el algoritmo de mezcla |

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s