Código de Dev - C++ - Ordenamiento por selección en C++

sin imagen de perfil
Val: 103
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ordenamiento por selección en C++gráfica de visualizaciones


Dev - C++

Publicado el 31 de Marzo del 2019 por Jose
3.089 visualizaciones desde el 31 de Marzo del 2019
Este programa permite el ordenamiento de datos por selección. Es importante recordar que este
algoritmo no es realmente eficiente, pero es intuitivo y buen paso para iniciar en el manejo de
apuntadores y su paso a funciones.

Funcionamiento del algoritmo:
El algoritmo se basa en la comparación de los datos de un arreglo para ordenarlo de forma ascendente o descendente
mediante comparación de valores e intercambio de ellos. Por ejemplo, supongamos que tenemos el siguiente conjunto
de datos en un arreglo:

54 2 46 7
El ordenamiento por selección funciona buscando el elemento más pequeño del arreglo, y luego intercambiándolo
por el primero. De esta manera, el elemento más pequeño del arreglo es el 2, y se debe intercambiar por el primer
valor del arreglo, que es el 54. Este cambio produce el siguiente arreglo:

2 54 46 7

Luego, se debe realizar el mismo algoritmo, pero como el 2 ya está ordenado, se deben analizar los números SIGUIENTES al 2
, es decir, el 54, 46 y 7.

El proceso finaliza cuando se itera un número de veces igual al número de elementos del arreglo.

Requerimientos

Librerías estándar de c++
#include <iostream>
#include <conio.h>
#include <iomanip>

1.0

Publicado el 31 de Marzo del 2019gráfica de visualizaciones de la versión: 1.0
3.093 visualizaciones desde el 31 de Marzo del 2019
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
#include <conio.h>
#include <iomanip>//para usar el setw
using std::setw;
using namespace std;
 
	//Prototipos de función
	void ordenarArreglo(int * const , const int );
	void intercambiar( int * const , int * const );
	void imprimirArreglo( const int * const , const int );
 
	int main()
	{
		//Se inicializa el arreglo
		const int tamanioArreglo = 4;
		int a[ tamanioArreglo ] = {54, 2 , 46 , 7};
 
 
		//operaciones para ordenamiento e impresión
		ordenarArreglo( a, tamanioArreglo );
		imprimirArreglo(a, tamanioArreglo);
 
 
		getch();
 
		return 0;
	}
 
 
 
	/*
		Función ordenar Arreglo:
		Esta función recibe el arreglo y su tamaño. Se utilizan 
		arreglos para operar estos valores, los cuales llegan por referencia.
	
	*/
 
	void ordenarArreglo(int * const arreglo, const int tamanio)
	{
		int minimo; //almacena el subíndice del valor minimo
		for(int i = 0; i < tamanio; i++ )//recorre todo el arreglo desde la posición inicial hasta el final
		{
			minimo = i; //se asume que el subíndice del valor mínimo es el primer valor
			for( int j = i + 1; j < tamanio; j++)//recorre el arreglo desde una posición siguiente al inicio
			{
				if( arreglo[j] < arreglo[minimo])
				minimo = j; //el minimo subíndice es j
 
			intercambiar( &arreglo[i] , &arreglo[minimo] ); //intercambio de valores del arreglo
 
			}
		}
 
 
 
	}
 
 
	/*
		void intercambiar: Intercambia los valores de entrada a través de apuntadores
		constantes a datos no constantes
	*/
	void intercambiar( int * const aPtr, int * const bPtr)
	{
 
		int aux = *aPtr;//uso de un auxiliar para el intercambio de los valores
		*aPtr = *bPtr;
		*bPtr = aux;
	}
 
	void imprimirArreglo( const int * const a, const int tamanioArreglo)
	{
		for(int i = 0; i < tamanioArreglo; i++ )
			cout<<setw(5)<<a[i];
	}



Comentarios sobre la versión: 1.0 (0)


No hay comentarios
 

Comentar la versión: 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s5228