讓出n個數,讓找出交換次數小於等於n的排序方法。。。
直接選擇排序,也是醉了
代碼如下:
#include <bits/stdc++.h>
#define MAXN 3300
using namespace std;
int a[MAXN], b[MAXN];
int c[MAXN];
int main(void) {
int n;
scanf("%d", &n);
for(int i=0; i<n; ++i) {
scanf("%d", &a[i]);
}
int cnt = 0;
for(int i=0; i<n; ++i) {
int k = i;
for(int j=i+1; j<n; ++j) {
if(a[j] < a[k]) {
k = j;
}
}
if(k != i) {
c[cnt++] = i;
c[cnt++] = k;
a[k] ^= a[i];
a[i] ^= a[k];
a[k] ^= a[i];
}
}
printf("%d\n", cnt/2);
for(int i=0; i<cnt; i+=2)
printf("%d %d\n", c[i], c[i+1]);
return 0;
}