Вопрос школьника
Видоизмените программу сортировки массива выбором так, чтобы в ней использовалась процедура выбора наибольшего элемента массива
Ответ от учителя
Программа сортировки массива выбором обычно выглядит следующим образом:
«`
void selectionSort(int arr[], int n) {
int i, j, min_idx;
for (i = 0; i < n-1; i++) {
min_idx = i;
for (j = i+1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
swap(&arr[min_idx], &arr[i]);
}
}
```
В этой программе используется процедура выбора наименьшего элемента массива. Однако, чтобы использовать процедуру выбора наибольшего элемента массива, нужно изменить несколько строк кода.
Вместо переменной `min_idx` нужно использовать переменную `max_idx`, а вместо знака `<` в условии цикла внутренней процедуры нужно использовать знак `>`:
«`
void selectionSort(int arr[], int n) {
int i, j, max_idx;
for (i = 0; i < n-1; i++) {
max_idx = i;
for (j = i+1; j < n; j++)
if (arr[j] > arr[max_idx])
max_idx = j;
swap(&arr[max_idx], &arr[i]);
}
}
«`
Таким образом, мы изменили процедуру выбора наибольшего элемента массива и использовали ее в программе сортировки выбором. Теперь программа будет сортировать массив по убыванию.