Определить позицию наименьшего числа и наибольшего числа и произвести сортировку - C (СИ)
Формулировка задачи:
Дан массив, int ar2[15] = {4,7,2,1,9,12,32,6,5,74,69,11,3,60,17} Необходимо определить позицию наименьшего числа и наибольшего числа и произвести сортировку от позиции наименьшего до позиции наибольшего. Например, в массиве ar2 наименьшее число - 1 индекс(позиция) - 3, а наибольшее 74 индекс - 9. Необходимо сделать сортировку от 3 индекса до 9, остальные числа не сортировать.
Решение задачи: «Определить позицию наименьшего числа и наибольшего числа и произвести сортировку»
textual
Листинг программы
#include <stdio.h>
int main(void){
int i,j,k,imax=0,imin=0,min,max,x;
int ar2[15] = {4,7,2,1,9,12,32,6,5,74,69,11,3,60,17};
min=ar2[0]; max=ar2[0];
for(i=0;i<15;i++){
if(ar2[i]<min){imin=i;min=ar2[i];}
if(ar2[i]>max){imax=i;max=ar2[i];}
}
for(i=imin+1;i<imax-2;i++){
k=i; x=ar2[i];
for(j=i+1;j<imax;j++){
if(ar2[j]<x){x=ar2[j]; k=j;}
}
ar2[k]=ar2[i]; ar2[i]=x;
}
for(i=0;i<15;i++){printf("%d ",ar2[i]);}
return(0);
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с I/O и объявляем функцию main.
- Объявляем переменные i, j, k, imax,imin, min, max, x и выделяем память под массив ar2.
- Инициализируем первое число в массиве ar2 как наименьшее и наибольшее число.
- Проходим по всем элементам массива ar2 и обновляем значения min и max при необходимости.
- Находим индекс наименьшего числа и наибольшего числа в массиве.
- Проходим по всем элементам массива ar2, начиная с индекса наименьшего числа и до индекса наибольшего числа, исключая границы.
- Внутренний цикл проходит по всем элементам, начиная с текущего индекса и ищет элемент, который нужно поменять местами с текущим элементом.
- По завершении внутреннего цикла, производим обмен элементов.
- Выводим отсортированный массив ar2 на экран.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.