Сортировка одномерного массива по возрастанию - прокомментировать код - C (СИ)
Формулировка задачи:
Здравствуйте, кто поможет объяснить как работает эта программа?
#include <stdio.h>
#include <conio.h>
void main()
{
int a[5];
int size,i,n,si=0,sj=0,min=0,temp;
printf("Enter size of Array");
scanf("%d",&size);
printf("Enter Elements");
for(i=0;i<size;i++)
{
scanf("%d",&n);
a[i]=n;
}
for(si=0;si<size;si++)
{
min=si;
for(sj=si+1;sj<size;sj++)
{
if(a[sj]<a[min])
min=sj;
}
temp=a[min];
a[min]=a[si];
a[si]=temp;
}
for(i=0;i<size;i++)
{
printf("%d ", a[i] );
}
getch();
}Решение задачи: «Сортировка одномерного массива по возрастанию - прокомментировать код»
textual
Листинг программы
/*Берем элемент массива с номером si*/
for(si=0;si<size;si++)
{
min=si;
/*Ищем минимальный элемент в массиве который начинается с номера si+1*/
for(sj=si+1;sj<size;sj++)
{
if(a[sj]<a[min])
min=sj;
}
/*Меняем элемент который взяли взяли с минимальным*/
temp=a[min];
a[min]=a[si];
a[si]=temp;
}
Объяснение кода листинга программы
- В начале каждого элемента массива
aустанавливается значениеtemp. Это значение будет использоваться как временное хранилище для элементов при выполнении операции обмена. - Начинается цикл от 0 до размера массива
a(предполагая, что размер массиваaбольше 0). - Для каждого элемента массива
aначиная с индексаsi, инициализируется переменнаяminзначениемsi. Эта переменная будет использоваться для отслеживания индекса минимального элемента в текущем подмассиве. - Начинается вложенный цикл от
si+1до размера массиваa, не включаяsi. - Для каждого элемента в текущем подмассиве, начиная с индекса
sj, проверяется, является ли значение этого элемента меньше значения элемента с индексомmin. Если это так, то значение переменнойminобновляется значениемsj. - После завершения вложенного цикла, выполняется операция обмена, где элемент с индексом
minзаменяется на значение временной переменнойtemp, а элемент с индексомsiзаменяется на значение временной переменнойtemp. - Цикл завершается.