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

sin imagen de perfil
Val: 84
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 (9 códigos)
33.874 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
estrellaestrellaestrellaestrellaestrella(2)

Publicado el 31 de Marzo del 2019gráfica de visualizaciones de la versión: 1.0
33.875 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 (2)

Carlos Albertro Varela
31 de Enero del 2020
estrellaestrellaestrellaestrellaestrella
Este algoritmo se puede generalizar con tamaño de "n" para cualquier array unidimensional. Igualmente en caso de tratarse de estructuras definidas se puede realizar el ordenamiento por palabra clave.

Comparto un link con el programa bajo consola en C++
https://tutorias.co/ciclo-for-visual-c-ordenar-un-vector-por-el-metodo-de-seleccion/
Responder
ingeniero Vanegas
8 de Marzo del 2022
estrellaestrellaestrellaestrellaestrella
Está bien el código, pero hay un pequeño error, la línea 49 va por fuera del segundo ciclo for, si se deja por dentro, va a afectar al momento de hacerlo con un arreglo de mayor tamaño.
Responder

Comentar la versión: 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s5228