Сортировка выбором, не могу вернуть массив в конце
cout и cin нет, т.к. пишу под программу, подставляющие тестовые случаи. Выдает такую ошибку:
__tester__.cpp: In function ‘int* SelectionSort(int*, int)’:
__tester__.cpp:21:15: error: ‘i’ was not declared in this scope
return &array[i];
Пробовал убирать &, показало invalid conversion from ‘int’ to ‘int*’.
Вот код:
int* SelectionSort(int array[], int size) {
int min = 0;
int max = 0;
for (int i = 0; i < size; i++)
{
min = i;
for (int j = i + 1; j < size; j++)
min = ( array[j] < array[min] ) ? j : min;
if (i != min)
{
max = array[i];
array[i] = array[min];
array[min] = max;
}
}
return &array[i];
}
Ответы (1 шт):
Что вы планируете вернуть из функции массив или максимальный/минимальный элемент? Потому что по приведенному коду это не очень понятно.
Если собираетесь возвращать массив, то нужно написать просто return array. (Что кстати не имеет смысла, т.к. новый массив вы в функции не создаете, а изменяете существующий). Смотрите более подробно передача массива в функцию.
Если же собираетесь вернуть, конкретный элемент массива (например, максимальный или минимальный), то следует изменить тип возвращаемого значения функции на int SelectionSort(int array[], int size) и возвращать либо return array[min], либо return array[max].
Также следует более внимательней читать описания ошибок, которые предоставляет компилятор, ваша же говорит о том, что переменная i, недоступна в текущей области видимости, так как она существует только внутри цикла for (int i = 0; i < size; i++).