вам дан несортированный массив, мы должны найти минимальное количество перестановок, необходимое для сортировки массива в порядке возрастания.
код, написанный мной, работает, но это не оптимизированный код. Эта проблема от hackerRank (https://www.hackerrank.com/challenges/minimum-swaps-2/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=arrays) истекает ограничение по времени, когда размер массива равен 100000
int main()
{
int num;
int swap=0;
scanf("%d",&num);
int arr[num];
for(int i=0;i<num;i++)
{
scanf("%d",&arr[i]);
}
for(int i=0;i<num;i++)
{
if(arr[i]==i+1)
{}
else
{
for(int j=i;j<num;j++)
{
if(i+1==arr[j])
{
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
swap++;
}
}
}
}
printf("%d",swap);
return 0;
}
, это ссылка для тестового случая, когда заканчивается время https://hr -testcases-us-east-1.s3.amazonaws.com/70816/input10.txt?AWSAccessKeyId=AKIAJ4WZFDFQTZRGO3QA&Expires=1569437814&Signature=zGqla8NqSOENSPJNt%2BkokJBX%2Fmk%3D&2_0_1_0_1_1_1_0_1_1_1_1_0_1