freeCodeCamp/guide/russian/miscellaneous/freecodecamp-algorithm-sele.../index.md

3.1 KiB
Raw Blame History

title localeTitle
Freecodecamp Algorithm Selection Sort Guide Выбор алгоритма выбора алгоритма Freecodecamp

Алгоритм сортировки сортировки сортирует массив, многократно набирая минимальный элемент (учитывая возрастающий порядок) из несортированной части и помещая его в начало. Алгоритм поддерживает два подмассива в заданном массиве.
1. Подмассив, который уже отсортирован.
2. Оставшийся субарфей, который несортирован.

На каждой итерации сортировки выбирается минимальный элемент (с учетом возрастания) из несортированного подмассива и перемещается в отсортированный подмассива.

пример

Анимация SelectionSort

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 

Реализация 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; 
 } 
 } 

: ракета: [Код запуска #### Реализация 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] 

:rocket: Код запуска

Сложность алгоритма

Сложность времени: O (n * n) Из-за двух вложенных циклов.