Cортировкa массивов на С

Я должен написать сортировку методом выбора, сущность которого состоит в том, что находим максимальный элемент массива и меняем его с первым элементом. Затем продолжаем то же самое, начиная со второго элемента массива и т.д. Для перестановки двух элементов необходимо ввести вспомогательную переменную. Вот мой код:

#include <stdio.h> 
#include <stdlib.h> 
#define NUM 15
int main()
{
    int array[NUM] = { 11, 42, 33, 14, 55, 36, 123, 241, 73, 82, 218, 46, 153, 108, 52 };
    printf("--------------Вхідний масив--------------\n");
    for (int i = 0; i < NUM; i++) {
        printf("%i ",array[i]);
    }
    for (int startIndex = 0; startIndex < NUM - 1; ++startIndex)
    {
        int maxIndex = startIndex;
        
        for (int currentIndex = startIndex + 1; currentIndex < NUM; ++currentIndex)
        {
            if (array[currentIndex] > array[maxIndex])
                
                maxIndex = currentIndex;
        }
        int t = array[startIndex];
        array[startIndex]= array[maxIndex];
        array[maxIndex] = t;
    }
    printf("%i ", array[0]);
    printf("\n-------------Відсортований масив---------------\n");
    for (int index = 0; index < NUM; ++index)
        printf("%i ", array[index]);
        
 
    return 0;
}

Ответы (1 шт):

Автор решения: MBo

Почему не работает? Вполне себе работает, если заменить непонятный swap на классический обмен

    int t = array[startIndex];
    array[startIndex]= array[maxIndex];
    array[maxIndex] = t;
→ Ссылка