Этот фрагмент кода, который заменяет два элемента массива
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
, неверен. Вам нужно написать
temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
Также было бы лучше написать
if ( i != min )
{
temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
}
Обратите внимание на то, что вы должны объявлять переменные в минимальной области видимости, где они используются.
Ваша программа может выглядеть следующим образом
#include <stdio.h>
int main( void )
{
size_t n;
printf( "Enter the number of elements of the array: " );
scanf( "%zu", &n );
int arr[n];
printf( "Enter the elements: " );
for ( size_t i = 0 ; i < n; i++ )
{
scanf( "%d", arr + i );
}
for ( size_t i = 0; i < n; i++ )
{
size_t min = i;
for ( size_t j = i + 1; j < n; j++ )
{
if ( arr[j] < arr[min] ) min = j;
}
if ( i != min )
{
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
printf( "Sorted array is: " );
for ( size_t i = 0; i < n; i++ )
{
printf( "%d ", arr[i] );
}
putchar( '\n' );
return 0;
}
Вывод может выглядеть как
Enter the number of elements of the array: 10
Enter the elements: 3 6 5 1 2 9 0 8 4 7
Sorted array is: 0 1 2 3 4 5 6 7 8 9