80 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			80 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Freecodecamp Algorithm Selection Sort Guide
							 | 
						||
| 
								 | 
							
								localeTitle: Selección de algoritmo de Freecodecamp Guía de clasificación
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								El algoritmo de selección de selección ordena una matriz encontrando repetidamente el elemento mínimo (considerando el orden ascendente) de la parte no clasificada y colocándolo al principio. El algoritmo mantiene dos subarreglos en una matriz dada.  
							 | 
						||
| 
								 | 
							
								1\. El subarray que ya está ordenado.  
							 | 
						||
| 
								 | 
							
								2\. Subarray restante sin clasificar.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								En cada iteración del orden de selección, el elemento mínimo (considerando el orden ascendente) del subarreglo no clasificado se selecciona y se mueve al subarreglo ordenado.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Ejemplo
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[Animación de SelectionSort](http://www.sorting-algorithms.com/selection-sort)
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								arr<a href='https://repl.it/CZa0' target='_blank' rel='nofollow'>] = 64 25 12 22 11 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 # Placing the minimum element in arr[0...4] in the beginning 
							 | 
						||
| 
								 | 
							
								 11 25 12 22 64 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 # Placing the minimum element in arr[1...4] in the beginning 
							 | 
						||
| 
								 | 
							
								 11 12 25 22 64 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 # Placing the minimum element in arr[2...4] in the beginning 
							 | 
						||
| 
								 | 
							
								 11 12 22 25 64 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 # Placing the minimum element in arr[3...4] in the beginning 
							 | 
						||
| 
								 | 
							
								 11 12 22 25 64 
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### Implementación de C ++
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								void selection_sort(int array[], int n) 
							 | 
						||
| 
								 | 
							
								 { 
							 | 
						||
| 
								 | 
							
								    // Contains index of minimum element in unsorted subarray 
							 | 
						||
| 
								 | 
							
								    int min_index; 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								    // Move boundary of unsorted subarray 
							 | 
						||
| 
								 | 
							
								 for(int i = 0; i < n-1; i++) 
							 | 
						||
| 
								 | 
							
								 { 
							 | 
						||
| 
								 | 
							
								    // Find the minimum element in unsorted subarray 
							 | 
						||
| 
								 | 
							
								    min_index = i; 
							 | 
						||
| 
								 | 
							
								    for(int j = i+1; j < n; j++) 
							 | 
						||
| 
								 | 
							
								    { 
							 | 
						||
| 
								 | 
							
								        // If present element is less than element at min_index 
							 | 
						||
| 
								 | 
							
								        // Then change min_index to present index 
							 | 
						||
| 
								 | 
							
								        if(array[j] < array[min_index]) 
							 | 
						||
| 
								 | 
							
								        { 
							 | 
						||
| 
								 | 
							
								            min_index = j; 
							 | 
						||
| 
								 | 
							
								        } 
							 | 
						||
| 
								 | 
							
								    } 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								    // Swap the element at min_index with the first element 
							 | 
						||
| 
								 | 
							
								    int temp; 
							 | 
						||
| 
								 | 
							
								    temp = array[min_index]; 
							 | 
						||
| 
								 | 
							
								    array[min_index] = array[i]; 
							 | 
						||
| 
								 | 
							
								    array[i] = temp; 
							 | 
						||
| 
								 | 
							
								 } 
							 | 
						||
| 
								 | 
							
								 } 
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: rocket: \[Ejecutar código #### Implementación de Python
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								def selection_sort(arr): 
							 | 
						||
| 
								 | 
							
								    for i in range(len(arr)): 
							 | 
						||
| 
								 | 
							
								        min_x = i 
							 | 
						||
| 
								 | 
							
								        for j in range(i+1,len(arr)): 
							 | 
						||
| 
								 | 
							
								            if arr<a href='https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":rocket:"' target='_blank' rel='nofollow'>j] < arr[min_x]: 
							 | 
						||
| 
								 | 
							
								                min_x = j 
							 | 
						||
| 
								 | 
							
								        arr[min_x], arr[i] = arr[i], arr[min_x] 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 arr = [64, 25, 12, 22, 11] 
							 | 
						||
| 
								 | 
							
								 selection_sort(arr) 
							 | 
						||
| 
								 | 
							
								 print(arr) # Prints [11, 12, 22, 25, 64] 
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 [Ejecutar código](https://repl.it/CXwQ)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### [Complejidad del algoritmo](https://www.freecodecamp.com/videos/big-o-notation-what-it-is-and-why-you-should-care)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Complejidad de tiempo:** O (n \* n) Debido a los dos bucles anidados.
							 |