题意:
给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 }