selection sort c with examples
Una mirada en profundidad al orden de selección en C ++ con ejemplos.
Como sugiere el propio nombre, la técnica de ordenación por selección selecciona primero el elemento más pequeño de la matriz y lo intercambia con el primer elemento de la matriz.
A continuación, intercambia el segundo elemento más pequeño de la matriz con el segundo elemento y así sucesivamente. Por lo tanto, para cada pasada, se selecciona el elemento más pequeño de la matriz y se coloca en su posición adecuada hasta que se ordena toda la matriz.
=> Consulte la guía de formación perfecta de C ++ aquí.
Lo que vas a aprender:
- Introducción
- Algoritmo general
- Pseudocódigo para ordenar por selección
- Ilustración
- Ejemplo de C ++
- Ejemplo de Java
- Análisis de complejidad del orden de selección
- Conclusión
- Lectura recomendada
Introducción
La clasificación por selección es una técnica de clasificación bastante sencilla, ya que la técnica solo implica encontrar el elemento más pequeño en cada pasada y colocarlo en la posición correcta.
La ordenación por selección funciona de manera eficiente cuando la lista que se va a ordenar es de tamaño pequeño, pero su rendimiento se ve muy afectado a medida que la lista que se va a ordenar aumenta de tamaño.
Por tanto, podemos decir que la ordenación por selección no es aconsejable para listas de datos más grandes.
Algoritmo general
El algoritmo general para ordenar la selección se da a continuación:
listas doblemente enlazadas c ++
Orden de selección (A, N)
Paso 1 : Repita los pasos 2 y 3 para K = 1 a N-1
Paso 2 : Llamar a la rutina más pequeña (A, K, N, POS)
Paso 3 : Intercambia A (K) por A (POS)
(Fin del ciclo)
Paso 4 : SALIDA
Rutina más pequeña (A, K, N, POS)
- Paso 1 : (inicializar) establecer más pequeñoElem = A (K)
- Paso 2 : (inicializar) establecer POS = K
- Paso 3 : para J = K + 1 a N -1, repita
si es más pequeñoElem> A (J)
establecer pequeñoElem = A (J)
establecer POS = J
(si termina)
(Fin del ciclo) - Paso 4 : devolver POS
Pseudocódigo para ordenar por selección
|_+_|A continuación se muestra un ejemplo para ilustrar este algoritmo de clasificación de selección.
Ilustración
La representación tabular de esta ilustración se muestra a continuación:
Lista sin clasificar | Elemento menor | Lista ordenada |
---|---|---|
{18,10,7,20,2} | 2 | {} |
{18,10,7,20} | 7 | {2} |
{18,10,20} | 10 | {2,7} |
{18,20} | 18 | {2,7,10) |
{20} | 20 | {2,7,10,18} |
{} | {2,7,10,18,20} |
En la ilustración, vemos que con cada pasada, el siguiente elemento más pequeño se coloca en su posición correcta en la matriz ordenada. En la ilustración anterior, vemos que para ordenar una matriz de 5 elementos, se requirieron cuatro pasadas. Esto significa que, en general, para ordenar una matriz de N elementos, necesitamos N-1 pases en total.
A continuación se muestra la implementación del algoritmo de clasificación de selección en C ++.
Ejemplo de C ++
|_+_|Producción:
Ingrese la lista de elementos a ordenar
11 5 2 20 42 53 23 34 101 22
La lista ordenada de elementos es
2 5 11 20 22 23 34 42 53 101
Número de pasadas necesarias para ordenar la matriz: 10
Como se muestra en el programa anterior, comenzamos la ordenación por selección comparando el primer elemento de la matriz con todos los demás elementos de la matriz. Al final de esta comparación, el elemento más pequeño de la matriz se coloca en la primera posición.
En la siguiente pasada, utilizando el mismo enfoque, el siguiente elemento más pequeño de la matriz se coloca en su posición correcta. Esto continúa hasta N elementos, o hasta que se ordena toda la matriz.
Ejemplo de Java
A continuación, implementamos la técnica de ordenación por selección en el lenguaje Java.
|_+_|Producción:
Lista de entrada para ordenar ...
11 5 2 20 42 53 23 34 101 22
imprimiendo elementos ordenados…
2 5 11 20 22 23 34 42 53 101
También en el ejemplo de Java anterior, aplicamos la misma lógica. Repetidamente encontramos el elemento más pequeño en la matriz y lo colocamos en la matriz ordenada hasta que toda la matriz esté completamente ordenada.
Por lo tanto, la ordenación por selección es el algoritmo más simple de implementar, ya que solo tenemos que buscar repetidamente el siguiente elemento más pequeño en la matriz e intercambiarlo con el elemento en su posición apropiada.
Análisis de complejidad del orden de selección
Como se ve en el pseudocódigo anterior para el ordenamiento por selección, sabemos que el ordenamiento por selección requiere dos bucles for anidados entre sí para completarse. Un bucle for recorre todos los elementos de la matriz y encontramos el índice de elemento mínimo utilizando otro bucle for que está anidado dentro del bucle for externo.
Por lo tanto, dado un tamaño N de la matriz de entrada, el algoritmo de clasificación de selección tiene los siguientes valores de tiempo y complejidad.
La complejidad del tiempo del peor de los casos | En 2); O (n) permutas |
Mejor complejidad en el tiempo del caso | En 2); O (n) permutas |
Complejidad de tiempo promedio | En 2); O (n) permutas |
Complejidad espacial | O(1) |
La complejidad temporal de O ( norte 2) se debe principalmente al uso de dos bucles for. Tenga en cuenta que la técnica de ordenación por selección nunca requiere más de O (n) intercambios y es beneficiosa cuando la operación de escritura en memoria resulta ser costosa.
Conclusión
La clasificación por selección es otra técnica de clasificación más simple que se puede implementar fácilmente. El ordenamiento por selección funciona mejor cuando se conoce el rango de valores que se van a ordenar. Por lo tanto, en lo que respecta a la clasificación de estructuras de datos mediante el ordenamiento por selección, solo podemos clasificar estructuras de datos que sean lineales y de tamaño finito.
Esto significa que podemos ordenar de manera eficiente estructuras de datos como matrices usando el ordenamiento de selección.
En este tutorial, hemos discutido el ordenamiento por selección en detalle, incluida la implementación del ordenamiento por selección utilizando los lenguajes C ++ y Java. La lógica detrás de la clasificación por selección es encontrar el elemento más pequeño de la lista repetidamente y colocarlo en la posición adecuada.
En el siguiente tutorial, aprenderemos en detalle sobre la ordenación por inserción, que se dice que es una técnica más eficiente que las otras dos técnicas que hemos discutido hasta ahora, es decir, la ordenación por burbujas y la ordenación por selección.
=> Consulte aquí para ver los tutoriales de capacitación de la A a la Z de C ++ aquí.
Lectura recomendada
- Orden de Shell en C ++ con ejemplos
- Método MongoDB Sort () con ejemplos
- Comando de ordenación de Unix con sintaxis, opciones y ejemplos
- Clasificación de burbujas en C ++ con ejemplos
- Orden de inserción en C ++ con ejemplos
- Combinar ordenación en C ++ con ejemplos
- Ordenar montón en C ++ con ejemplos
- Clasificación rápida en C ++ con ejemplos