#include <stdio.h>
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
// int findNotOk(int A[], int N)
int findNotOk(int A[], int begin, int N)// 要从begin开始,从1开始会超时
{
for (int i = begin; i < N; i++)
if (A[i] != i)
return i;
return 0;
}
int main(int argc, char const *argv[])
{
// freopen("test.txt", "r", stdin);
int N;
scanf("%d", &N);
int A[N], tmp;
for (int i = 0; i < N; i++){
scanf("%d", &tmp);
A[i] = tmp;
}
int cnt = 0;
int current = findNotOk(A, 1, N);
while(current != 0){
if (A[0] == 0){//
A[0] = A[current];
A[current] = 0;
cnt++;
}
while (A[0] != 0){
swap(&A[0], &A[A[0]]);
cnt++;
}
current = findNotOk(A, current, N);
}
printf("%d", cnt);
return 0;
}
10-排序6 Sort with Swap(0, i)
最新推荐文章于 2024-04-02 13:38:53 发布