题意:

给n个整数(可能有重复),输出一个不超过n次交换的方案,使得经过这n次交换后,整个序列正好是非递减的。

分析:

首先说题解给的算法。

从左到右扫一遍,交换第i个数和它后面最小的那个数。

代码看起来大概是这个样子的:

 1     for (int i = 0; i < n; i++)
 2     {
 3         int j = i;
 4         for (int t = i; t < n; t++)
 5             if (a[j] > a[t])
 6                 j = t;
 7         if (i != j)
 8             answer.push_back(make_pair(i, j));
 9         swap(a[i], a[j]);
10     }
代码君

相关文章: