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;